Mam pytania dotyczące uprawnień do uruchamiania systemu Android 6. Jeśli użytkownik chce wybrać zdjęcie z galerii, czy powinniśmy poprosić o pozwolenie READ_EXTERNAL_STORAGE? Wygląda na to, że mogłem uzyskać dostęp do galerii, mimo że wyłączam pozwolenie na przechowywanie. Dzięki.Android 6 runtime zezwolenie na dostęp do galerii.
Odpowiedz
Musisz poprosić o READ_EXTERNAL_STORAGE. Będziesz mógł uzyskać dostęp do galerii bez niego, ale jeśli chcesz zrobić cokolwiek z multimediami, które dostajesz z galerii, będziesz potrzebować pozwolenia READ.
Szybki test na to, co dzieje się w onActivityResult po obrazie zostało odebrane formularz galerii:
Permission Denial: czytanie com.android.providers.media.MediaProvider uri treści: // media/zewnętrzny/images/media z pID = 8405, uid = 10177 wymaga android.permission.READ_EXTERNAL_STORAGE lub grantUriPermission()
Dla niestandardowej zezwolenia, może wykorzystać uprawnienia wykonawcze jeśli używasz Androida 6.0 lub above.This kod może ci pomóc.
Jeśli aplikacja nie mają już pozwolenie potrzebuje, aplikacja musi wezwanie jedna z requestPermissions() metody, aby zwrócić się do odpowiednie uprawnienia. Twoja aplikacja przekazuje wymagane uprawnienia, a także również kod żądania liczby całkowitej, który określasz, aby zidentyfikować to żądanie uprawnień z zakresu . Ta metoda działa asynchronicznie: od razu zwraca , a po odpowiedzi użytkownika na okno dialogowe system wywołuje metodę wywołania zwrotnego aplikacji z wynikami, przekazując ten sam kod żądania, który aplikacja przekazała do requestPermissions().
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
To Know more about runtime permission
https://developer.android.com/training/permissions/requesting.html