安卓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); } }
相关文章推荐
- 安卓6.0之后动态申请权限的 解决方案
- android 6.0以后动态申请多个危险权限笔记
- 安卓6.0动态权限申请问题,可见链接
- 安卓6.0动态申请权限
- 安卓6.0以上动态权限申请
- Android6.0 动态权限申请步骤以及需要注意的一些坑
- Android 6.0 动态权限申请注意事项
- Android中Zxing二维码的扫描、生成(带有动态权限申请)
- Android 6.0 动态权限申请
- 安卓6.0动态权限配置查询
- android 6.0动态权限申请以及拒绝后的控制
- 安卓6.0系统权限申请android.permission.WRITE_SETTINGS
- android 6.0, 7.0之动态申请权限完美解决方案
- android6.0(API23)以上动态申请权限
- android 动态权限申请 rxjava2实现方法
- Android 6.0动态申请权限
- Android6.0 读写SD卡权限动态申请
- 安卓6.0+动态权限申请
- Android6.0动态权限申请步骤以及需要注意的一些坑
- 权限动态申请的问题