動態權限申請不回調的其中一個原因!

最近做了個Demo,需要去相冊獲取一張圖片.

這個時候就需要動態權限了,但是就是不回調,就是不回調,就是不回調!

由於是在Fragment中來寫的這一段代碼,所以導致了Fragment獲取動態權限與Activity不同!

不說了,上代碼:

Fragment中的動態權限:

if(ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
    Log.i("===============", "打開儲存權限");
    requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}else{
    openAlbum();
}

Activity中的動態權限:

if(ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
    Log.i("===============", "打開儲存權限");
    ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}else{
    openAlbum();
}

看到沒 就是不一樣

主要的區別是Fragment中不能使用ActivityCompat這個方法調用動態權限!

否則不能回調:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode){
        case 1:
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                openAlbum();
            }else{
                Toast.makeText(context, "請打開相應權限", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}

終於解決掉了這個坑!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章