在运行时授予用户权限后,Android 6.0需要重新启动

SmT*_*SmT 13 permissions android android-permissions android-6.0-marshmallow

我按照本指南要求获取Android 6.0的权限,https://developer.android.com/preview/features/runtime-permissions.html#support-lib

但是,我必须销毁我的应用程序并重新启动以实际获得WRITE_EXTERNAL_STORAGE权限,否则它将无法创建文件.

我错过了什么吗?

if(ActivityCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED){
    ActivityCompat.requestPermissions((MainActivity)mContext,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE);
} else {
    Intent i = new Intent(v.getContext(), ServiceDownload.class);
    v.getContext().startService(i);
}
Run Code Online (Sandbox Code Playgroud)

文件在服务中创建,这是模拟器而不是真实设备.

Dra*_*ag0 2

正如有人已经提到的那样,这是一个错误,但我在这个问题中发现您可以添加这一行:

android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)

获得您的许可后。这不是真正的修复,只是有助于避免崩溃。