我跟随MainActivity寻求6.0手机和手机的许可。存储任务。它提示 许可2次然后崩溃。在acquire_permission之后,是否需要重新启动MainActivity? 感谢您的帮助或指示。
MainActivity.java
onCreate(){
seek_permissions()
//load db data and continue
//with the app tasks
}
public void seek_permissions(){
boolean hasWritePermission = (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
if (!hasWritePermission) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.MOUNT_FORMAT_FILESYSTEMS,Manifest.permission.RECEIVE_BOOT_COMPLETED,Manifest.permission.MODIFY_PHONE_STATE}, REQUEST_PERM);
}
}
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_PERM:
{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
acquired_perm = 1;
}
else {Toast.makeText(MainActivity.this, "Please consider granting these permissions", Toast.LENGTH_LONG).show(); }
}
return;
}
}
答案 0 :(得分:5)
对我而言,这是因为我的清单中使用android:noHistory="true"
来进行此活动?
我认为这可能是Android 6.0的一个错误,因为后来的版本看起来很好。
如果设置了noHistory
,则ActivityCompat.requestPermissions
调用会导致调用Activity的onDestroy
执行,从而导致销毁。由于noHistory
它不再存在,因此它不会保存在历史记录中,并且在取消权限对话时应用程序基本上已关闭。
作为解决方法而不是清单中的"noHistory"
,您可以在导航离开活动时从finish()
或其他适当位置调用onStop()
并从清单中删除标记。