Android SDK 29+ 读取存储权限问题
发布日期:2021-05-27 01:31:57 浏览次数:31 分类:精选文章

本文共 1593 字,大约阅读时间需要 5 分钟。

在Android API 29的环境下,想要播放内存中的视频,需要注意以下几个方面。首先,确保在AndroidManifest.xml文件中添加了相应的静态权限。具体来说,需要包含以下两个权限:

接下来,在代码中添加动态权限请求的逻辑。可以参考以下代码片段。

private static final int REQUEST_EXTERNAL_STORAGE = 1;private static String[] PERMISSIONS_STORAGE = {    "android.permission.READ_EXTERNAL_STORAGE",    "android.permission.WRITE_EXTERNAL_STORAGE"};public static void verifyStoragePermissions(Activity activity) {    try {        int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");        if (permission != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);            System.out.println("request permissions");        } else {            System.out.println("already has permissions");        }    } catch (Exception e) {        e.printStackTrace();    }}

然而,在SDK 29(Android 11)及更高版本下,仅仅添加上述权限可能还不够。为了兼容最新的系统版本,需要在AndroidManifest.xml的<application>标签中添加以下属性:

这样做的目的,是将应用程序识别为能够访问外部存储的“ legacy应用”。虽然通常情况下通过动态权限申请可以获得访问外部存储的权限,但在某些情况下,特别是当应用程序需要连续访问外部存储权限时,添加上述metadata属性能够确保权限的稳定性。

在完成上述配置后,可以按照以下步骤进行测试和验证:

  • 编译应用程序并安装到设备上。
  • 启动应用程序并尝试访问外部存储。
  • 悬停在应用程序的后台,查看Logcat工具中的日志输出,确认是否有权限相关的错误信息。
  • 通过以上步骤,可以确认应用程序是否成功地获得了外部存储的权限。如果权限申请仍然失败,可以检查Logcat中的日志,获取更详细的错误信息,进一步排查问题所在。

    在实际应用中,某些外部存储位置(如移动SD卡)可能由于系统内核模块的默认策略,拒绝普通应用程序访问。对于这种情况,可以尝试将应用程序指定为持久可信应用(Trusted Application),从而获得更高的权限级别。具体实现方法可以参考Android的Trusted Application API。

    总结来说,通过在AndroidManifest.xml中添加相应的权限声明和meta数据,以及在代码中完成动态权限申请,可以有效地在Android API 29及更高版本下,实现对外部存储的访问权限。这对于确保视频播放功能的正常运行至关重要。

    上一篇:Android Fragment 和 Activity相互传值
    下一篇:MPAndroidchart图表库的使用踩的坑

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年05月01日 01时01分29秒