Android 6.0 needs restart after granting user perm

2019-02-21 10:22发布

问题:

I follow this guide to ask for permissions for Android 6.0, https://developer.android.com/preview/features/runtime-permissions.html#support-lib

However, I have to destroy my application and re-launch to actually have the WRITE_EXTERNAL_STORAGE permission, otherwise it keeps failing for file creation.

Am I missing something?

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);
}

File is created in the service and this is emulator not a real device.

回答1:

It is a bug as someone already mentioned, but I found in this question that you can add this line:

android.os.Process.killProcess(android.os.Process.myPid());

after your permission has been granted. This is not a real fix, just helps avoid crashing.