Я пытаюсь реализовать разрешение во время выполнения, но есть несколько проблем, когда FragmentActivity
принимает onRequestPermissionResult()
. Метод checkPermissions()
работает очень хорошо, но onRequestPermissionResult()
никогда не вызывается после того, как Пользователь разрешил или запретил разрешения.onRequestPermissionsResult() никогда не вызывается в FragmentActivity
Когда системное диалоговое окно отображается для запроса разрешения, MyActivity.onDestroy()
никогда не вызывается. Это относится к этой проблеме?
Я уже пробовал следовать this one и another one, но я думаю, что что-то пропустил.
Мой аппарат Nexus 5X (Android 6.0) и Target SDK версии 23. Минимальная версия поддержка SDK 15. Конечно, я написал необходимые разрешения в AndroidManifest.xml
и добавлены библиотеки поддержки V23 в build.gradle.
Это мой код:
public class MyActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkPermissions();
}
private void checkPermissions(){
String[] dangerousPermissions = {
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.GET_ACCOUNTS,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
};
for(String permission : dangerousPermissions){
if (!hasPermission(permission)) {
Log.e("permission.debug", "need to grant " + permission);
ActivityCompat.requestPermissions(this, dangerousPermissions, 4);
}
}
}
public boolean hasPermission(String permission){
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.d("permission.debug", " request code " + requestCode);
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == 0 && Manifest.permission.READ_PHONE_STATE.equals(permissions[i])) {
initiate();
}
}
}
}
Это журнал для моего кода:
E/permission.debug: need to grant android.permission.READ_PHONE_STATE
E/permission.debug: need to grant android.permission.GET_ACCOUNTS
E/permission.debug: need to grant android.permission.WRITE_EXTERNAL_STORAGE
E/permission.debug: need to grant android.permission.RECORD_AUDIO
Спасибо.
Не могли бы вы поделиться своим LogCat? –
Я попытался получить некоторые журналы для этого кода, не было никаких ошибок или предупреждений .. Это странно. –
Вы можете найти ответ на этот [link] (https://stackoverflow.com/questions/32714787/android-m-permissions-onrequestpermissionsresult-not-being-called) –