Android 应用在使用 ActivityCompat.requestPermissions 寻求权限时在 6.0 上崩溃

标签 android android-6.0-marshmallow android-permissions

我正在关注 MainActivity,它正在寻求 6.0 Phone & Storage 任务的许可。它提示 权限 2 次,然后崩溃。获得权限后是否需要重启MainActivity? 感谢您的帮助或指点。

主 Activity .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;
        } 
    }

最佳答案

对我来说,这是由于在我的 list 中为此 Activity 使用 android:noHistory="true" 造成的吗?

我认为这可能是 Android 6.0 的一个错误,因为看起来更高版本可以正常工作。

如果设置了 noHistory,则 ActivityCompat.requestPermissions 调用会导致调用 Activity 的 onDestroy 被执行,从而销毁。由于 noHistory,它没有保存在历史记录中,因此它不再存在,并且当权限对话框被取消时应用程序基本上关闭。

作为替代方法,您可以在 onStop() 或其他适当位置调用 finish(),而不是 list 中的 "noHistory"离开 Activity 并从 list 中删除标签。

关于Android 应用在使用 ActivityCompat.requestPermissions 寻求权限时在 6.0 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38444608/

相关文章:

java - 如何在android中设置循环背景

Android PopupWindow 动画不工作

android - FingerprintManager.isHardwareDetected() 抛出 java.lang.SecurityException?

Android:ContextCompat.getColor(上下文,R.color.my_color),无法解析 "getColor"

Android - 由于位置权限从设置中撤销而导致应用程序崩溃

android - 致命异常 : java. lang.SecurityException:缺少插入徽章的权限

java - 处理 Android fragment 事务问题的正确/最佳方法

android - 适用于 appr.tc 的 native android 应用程序

android - 三星会支持 Google 来自 Marshmallow 的指纹 API 吗?

android - 即使具有 READ_EXTERNAL_STORAGE 权限,getExternalFilesDir(null) 也会返回 null