Я тестирую свое приложение на 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 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) {
}
}
Мой вопрос: где именно запросить разрешение у пользователя? Должны ли мы использовать запрашивающее разрешение при запуске приложения или мы должны делать это, когда требуется разрешение?