关于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,而且没有弹出提示请求权限的窗口,请问是为什么?

原因是在某个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) 的时候就代表申请成功了.