存储访问权限在应用信息中不可见

Posted

技术标签:

【中文标题】存储访问权限在应用信息中不可见【英文标题】:Storage Access Permission is not visible in app info 【发布时间】:2018-12-11 10:49:39 【问题描述】:

我已在清单中为我的 android 应用添加了 READ 和 WRITE 存储权限。我出于某种目的使用这些权限来访问图库图像。但是当我在 android 设置中检查我的应用程序的应用程序信息时,存储权限选择器在应用程序信息页面中不可用。但是,所有其他权限选择器都在那里。

我的问题不是关于我如何请求棉花糖的许可。我已经在我的代码中定义了运行时权限。清单文件中的所有必需的使用权限也是如此。但是,我仍然没有在 android 设置的应用信息中获得存储权限。

【问题讨论】:

@AbdulmalekDery 你仔细阅读问题了吗?你提到的问题怎么重复? @AbdulmalekDery 我已经在课堂上添加了该代码,但我仍然没有在 android 设置的应用信息中看到该权限 好的...抱歉 【参考方案1】:

这是我检查权限是否已被允许的一段代码。

当用户点击相机或存储时调用此函数:

    //>=Marshmallow(23) needs app to request run-time permissions to use some features.
            if (Build.VERSION.SDK_INT >= 23) 
                if (checkPermission()) 
                    //permission to use Camera is already granted, now pick image
open camera or file picker    
                 else 
                    //App can still ask user for permission.
                    requestPermission();
                
            

checkPermission 函数:

private boolean checkPermission() 
        int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
        return result == PackageManager.PERMISSION_GRANTED;
    

这里是 requestPermission 函数:

private void requestPermission() 
        ActivityCompat.requestPermissions(this,
                new String[]Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
                PERMISSION_REQUEST_CODE);
    

清单文件:

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

编辑:也回答你的问题,通过这种方式我可以在应用程序权限设置中看到存储权限。

【讨论】:

感谢您的回答,但我已经在清单文件中定义了权限但无法正常工作。【参考方案2】:

我不知道问题是什么,但我通过在 android 清单类本身的权限上添加标签解决了我的问题。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace"/>

【讨论】:

了不起的兄弟,你拯救了我的一天。谢谢! => 工具:node="replace" 查看apk中的AndroidManifest.xml,好像是添加了&lt;uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE" maxSdkVersion="18" /&gt;,本质上是去掉了。让tools:node="replace" 将该行替换为没有maxSdkVersion 的行。

以上是关于存储访问权限在应用信息中不可见的主要内容,如果未能解决你的问题,请参考以下文章

无法访问S3存储桶

Android平台应用启动时读写手机存储访问设备信息(如IMEI)等权限策略及提示信息

Java 访问权限修饰符 与 非访问权限修饰符

AndroidQ兼容性适配指南

AndroidQ兼容性适配指南

AndroidQ兼容性适配指南