动态获取sdcard写入权限
首先在Manifest文件中添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
检查app是否拥有写入sd卡的权限,若无则弹出请求权限的Dialog。
/**
* 获取写入sdcard的权限
* @param activity
*/
public static void getSDCardRWPermission(Activity activity){
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
}
}
用户选择允许或拒绝后,回调onRequestPermissionsResult方法, 返回请求码,类似于onActivityResult
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "onRequestPermissionsResult:Permission Granted ");
} else {
Log.d(TAG, "onRequestPermissionsResult: Permission Denied");
}
break;
default:
break;
}
}