有時候我們的應(yīng)用需要讀寫sd卡,就需要android.permission.WRITE_EXTERNAL_STORAGE權(quán)限,但是它屬于危險型權(quán)限窿锉。光在Manifest中配置還不夠,你還需要運行時請求去用它們。
以下就以Mainfest.permission.WRITE_EXTERNAL_STORAGE為例王浴,
1)檢測是否擁有權(quán)限
image.png
2)如果沒有權(quán)限就請求權(quán)限
image.png
requestPermission()是個異步請求方法,調(diào)用它之后梅猿,Android會彈出系統(tǒng)權(quán)限授權(quán)對話框要求用戶反饋氓辣。
為響應(yīng)用戶操作,還需要重寫onRequestPermissionResult()響應(yīng)方法袱蚓,用戶點擊 允許 或 拒絕 按鈕后钞啸,Android就會調(diào)用這個方法。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 0: { //這個0是requestCode喇潘,上面requestPermissions有用到
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), "已獲取權(quán)限,可以保存圖片", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "您拒絕了寫文件權(quán)限体斩,無法保存圖片", Toast.LENGTH_SHORT).show();
}
return;
}
}
}
然后我們在這個方法里檢測是否擁有權(quán)限,如果有權(quán)限颖低,就...絮吵。
如果你點擊了 允許 按鈕給予權(quán)限,除非卸載或關(guān)閉權(quán)限忱屑,應(yīng)用會一直擁有該權(quán)限蹬敲。如果選了拒絕扼褪,應(yīng)用的授權(quán)只是暫時被否。下次要獲取讀寫文件的話粱栖,可以繼續(xù)用requestPermission()來請求權(quán)限话浇。