关于android动态请求权限的问题?

代码:

if (ActivityCompat.checkSelfPermission(sActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(sActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_SAVE_PHOTO);

 }

回调:

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    }

回调的grantResults参数里面永远是-1,而且没有弹出提示请求权限的窗口,请问是为什么?

3个回答

原因是在某个aar包中写了android:maxSdkVersion="18",导致部分机型获取不到权限

ActivityCompat.requestPermissions(this, permissions, 321);
onRequestPermissionsResult中:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) 的时候就代表申请成功了.

qq_32508519
Jimmy_buer 回复wht525097920: 能弹出来权限请求框吗? 是否在manifest中填写 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
一年多之前 回复
wht525097920
wht525097920 我知道,问题就是这个grantResults[0]==PackageManager.PERMISSION_GRANTED
一年多之前 回复

首先明确一点:**动态请求权限,在Activity和Fragment中的代码是不一样的。**

看你的代码,应该是在Fragment中申请的权限,那么就不要使用ActivityCompat.requestPermissions, 直接使用Fragment的requestPermissions方法,否则会回调到Activity的 onRequestPermissionsResult

wht525097920
wht525097920 我的代码就是在Activity上面写的,现在就是WRITE_EXTERNAL_STORAGE的权限申请不了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐