Я тестирую свое приложение на Marshmallow 6.0
, и оно принудительно закрывается для android.permission.READ_EXTERNAL_STORAGE
, даже если оно уже определено в манифесте. Где-то я читал, что если я запрошу разрешение во время выполнения, это не приведет к принудительному закрытию вашего приложения. Я также прочитал этот документ для Android, который предназначен для запроса разрешение времени выполнения.
Итак, я узнал, что мы можем запросить разрешение, как показано ниже, которое упоминается в документе Android.
// 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 expanation 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.
}
}
В приведенном выше коде есть метод обратного вызова onRequestPermissionsResult
, который получает результат.
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
}
}
Мой вопрос: где именно запрашивать разрешение у пользователя? Должны ли мы использовать запрос разрешения при запуске приложения или мы должны делать это так же, как когда требуется разрешение?
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- person Pararth   schedule 08.12.2015