您的位置:首页 > 其它

安卓6.0以后动态申请权限

2017-07-20 21:29 218 查看
//    这是一个自定义方法,写入和读取Sdcard权限
private void writeDataToSdcard() {
/**
*  checkSelfPermission()方法返回 -1 没有授权,0 授权
* PERMISSION_GRANTED==0 授权    PERMISSION_DENIED==1 没有授权
* 判断读和写Sdcard是否授权,如果没有授权就申请授权,
* 如果授权就从里面读取数据
*/
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission
.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||                   ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) !=PackageManager.PERMISSION_GRANTED) {
//            如果没有授权就申请授权
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest
.permission.READ_EXTERNAL_STORAGE) || ActivityCompat
.shouldShowRequestPermissionRationale(this, Manifest.permission
.WRITE_EXTERNAL_STORAGE)) {
/**
* 参数一 上下文参数.
* 参数二 要申请的权限数组,
* 参数三 授权码 自定义,每次申请的权限授权码不要相同就可以
*/
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission
.WRITE_EXTERNAL_STORAGE, Manifest.permission
.READ_EXTERNAL_STORAGE}, 100);
} else {//如果没有同意就继续申请
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission
.WRITE_EXTERNAL_STORAGE, Manifest.permission
.READ_EXTERNAL_STORAGE}, 100);
}
} else { //如果已经授权,直接读取sdcard数据内容
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new
FileInputStream(new File(Environment.getExternalStorageDirectory(), "text" +
".txt"))));
String readLine = bufferedReader.readLine();
Toast.makeText(this, "读取到的内容:" + readLine, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}

}

/**
* @param requestCode  授权码,看看是否和上面自定义的授权码一致
* @param permissions
* @param grantResults 授权结果值
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull
int[] grantResults) {

if (requestCode == 100) {
//            处理写的权限
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
try {
FileOutputStream fo = new FileOutputStream(new File(Environment
.getExternalStorageDirectory(), "text.txt"));
fo.write(("测试否是有网络").getBytes());
fo.flush();
fo.close();
Toast.makeText(this, "写入成功", Toast.LENGTH_SHORT).show();

} catch (Exception e) {
e.printStackTrace();
}
} else if (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new
FileInputStream(new File(Environment.getExternalStorageDirectory(), "text" +
".txt"))));
String line = reader.readLine();
Toast.makeText(this, line, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
} else
Toast.makeText(this, "申请失败", Toast.LENGTH_SHORT).show();

}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: