关于Android22以上读写文件权限问题:Caused by: java.lang.SecurityException: Permission Denial

Android 做棵大树 6年前 (2018-06-17) 2385次浏览 2个评论

旧权限无效

最近再写一个音乐播放器,所以要实现本机读取的功能,但是,我在 AndroidManifest.xml 文件中加入权限后总是停止运行报错,最后通过在网上搜索,发现原来是没有权限。

Android6.0 以上,也就是 23 以上,部分权限就需要手动申请了。所以除了在AndroidManifest.xml中加入权限外,还要进行判断和申请。

AndroidManifest.xml 代码文件:

<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/

申请权限文件,建议放在 MainActivity.java 文件的 onCreate 方法下面:

MainActivity.java 代码文件

private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        "android.permission.READ_EXTERNAL_STORAGE",
        "android.permission.WRITE_EXTERNAL_STORAGE" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //权限管理
    try {
        //检测是否有写的权限
        int permission = ActivityCompat.checkSelfPermission(this,
                "android.permission.WRITE_EXTERNAL_STORAGE");
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // 没有写的权限,去申请写的权限,会弹出对话框
            ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    initView();

}

运行后会报错一下,然后点击允许权限,就可以进行访问了。


做棵大树 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于 Android22 以上读写文件权限问题:Caused by: java.lang.SecurityException: Permission Denial
喜欢 (6)
[欢迎投币]
分享 (0)
关于作者:
一个整天无所事事的,有时候忽然热血的孩子
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 文章不错非常喜欢
    新闻头条2018-06-20 02:36 回复 Windows 7 | Chrome 55.0.2883.87
    • 谢谢谢谢,我会更努力的 :oops: :oops:
      做棵大树2018-06-20 07:32 回复 Linux | Chrome 57.0.2987.108