代码:
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,而且没有弹出提示请求权限的窗口,请问是为什么?
原因是在某个aar包中写了android:maxSdkVersion="18",导致部分机型获取不到权限
首先明确一点:**动态请求权限,在Activity和Fragment中的代码是不一样的。**
看你的代码,应该是在Fragment中申请的权限,那么就不要使用ActivityCompat.requestPermissions, 直接使用Fragment的requestPermissions方法,否则会回调到Activity的 onRequestPermissionsResult
ActivityCompat.requestPermissions(this, permissions, 321);
onRequestPermissionsResult中:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) 的时候就代表申请成功了.