安卓9.0数据存储---->打开读写权限
最近在开发安卓项目,关于I/O流文件的写入。写了代码,一步步进行调试,搞了好几天也没发现哪里出现了 错误,最后发现安卓6.0版本以上的数据写入需要动态打开权限。
一、在AndroidManifest.xml注册下面两条权限
下面展示一些 内联代码片
。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
二、在 java中 加入动态代码
//申请授权文件写入
public static class PermissionUtils {
private static String[] PERMISSIONS_CAMERA_AND_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA};
public static boolean isGrantExternalRW(Activity activity, int requestCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int storagePermission = activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
int cameraPermission = activity.checkSelfPermission(Manifest.permission.CAMERA);
if (storagePermission != PackageManager.PERMISSION_GRANTED ||
cameraPermission != PackageManager.PERMISSION_GRANTED) {
activity.requestPermissions(PERMISSIONS_CAMERA_AND_STORAGE, requestCode);
return false;
}
}
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//getData(AcRed,"rider.txt");
} else {
runOnUiThread(new Runnable() {
@SuppressLint("WrongConstant")
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您的手机暂不适配哦~",1).show();
}
});
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
三、在onCreate中调用即可打开权限
PermissionUtils.isGrantExternalRW(MainActivity.this, 1);
这样就完美的实现了数据的读写,开发小白,,,希望读者少踩坑!!!
本文参考链接: https://blog.csdn.net/qq_23335213/article/details/78081114.