首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我已将targetSdkVersion更新为Q,但无法获得读取媒体镜像的权限

问题:我已将targetSdkVersion更新为Q,但无法获得读取媒体镜像的权限。

回答: 在Android Q及更高版本中,Google引入了更严格的权限控制机制,以保护用户的隐私和数据安全。其中一个变化是对外部存储的访问权限进行了限制。如果您的应用程序需要读取媒体镜像(如照片、视频等)的权限,您需要在代码中进行一些调整。

首先,您需要在AndroidManifest.xml文件中添加以下权限声明:

代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后,您需要在运行时请求该权限。可以使用以下代码示例:

代码语言:txt
复制
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {
    // 如果权限尚未授予,则请求权限
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            REQUEST_READ_EXTERNAL_STORAGE);
} else {
    // 如果权限已经授予,则进行读取媒体镜像的操作
    readMediaImage();
}

在上述代码中,REQUEST_READ_EXTERNAL_STORAGE是一个自定义的请求代码,用于在权限请求结果返回时进行识别。

接下来,您需要处理权限请求结果。可以使用以下代码示例:

代码语言:txt
复制
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
        @NonNull int[] grantResults) {
    if (requestCode == REQUEST_READ_EXTERNAL_STORAGE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 如果权限已经授予,则进行读取媒体镜像的操作
            readMediaImage();
        } else {
            // 如果权限被拒绝,则向用户解释为什么需要该权限,并提供跳转到应用设置页面的选项
            if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
                // 向用户解释为什么需要该权限
                showPermissionExplanationDialog();
            } else {
                // 提示用户跳转到应用设置页面手动授予权限
                showPermissionSettingsDialog();
            }
        }
    }
}

在上述代码中,showPermissionExplanationDialog()showPermissionSettingsDialog()是自定义的方法,用于向用户解释权限的重要性和提供跳转到应用设置页面的选项。

最后,您可以在readMediaImage()方法中执行读取媒体镜像的操作。

需要注意的是,Android Q及更高版本还引入了Scoped Storage的概念,这意味着应用程序只能访问其自己的应用专属目录以及一些公共媒体目录,而无法直接访问外部存储的其他文件。如果您需要访问其他应用程序的媒体文件,您可以使用MediaStore API进行访问。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于存储和管理媒体镜像等文件。详情请参考:腾讯云对象存储(COS)
  • 腾讯云移动推送:提供消息推送服务,可用于向应用程序的用户发送通知。详情请参考:腾讯云移动推送
  • 腾讯云云服务器(CVM):提供可扩展的云服务器实例,可用于部署和运行应用程序。详情请参考:腾讯云云服务器(CVM)
  • 腾讯云云数据库MySQL版:提供高性能、可扩展的云数据库服务,适用于存储和管理应用程序的数据。详情请参考:腾讯云云数据库MySQL版
  • 腾讯云人工智能:提供丰富的人工智能服务和工具,可用于开发和部署人工智能应用程序。详情请参考:腾讯云人工智能
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

拖不得了,Android11真的来了,最全适配实践指南奉上

以下分为两部分讲述,分别是 以Android11 目标版本应用(targetSdkVersion>=30才有影响)⭐ 所有应用在Android11设备上适配改动(无论targetSdkVersion...createFavoriteRequest()用户将设备上指定媒体文件标记为“收藏”请求。对该文件具有读取访问权限任何应用都可以看到用户已将该文件标记为“收藏”。...用户无法在搭载 Android 11 设备上安装或更新仅通过 APK 签名方案 v1 签名应用。...” 这个介绍已经很明显了吧,如果你targetSdkVersion修改到30,那么你就必须要加上v2签名才行。否则无法安装和更新。...限制对 APN 数据库读取访问 “以 Android 11 目标平台应用现在必须具备 Manifest.permission.WRITE_APN_SETTINGS 特权,才能读取或访问电话提供程序

7K340266

Android 分区存储常见问题解答

要在 Google Play 上发布,开发者需要将应用 目标 API 级别 (targetSdkVersion) 更新到 API 级别 30 (Android 11) 或者更高版本。...如果您应用当前已经设置了 android:requestLegacyStorage="true",就应该在 targetSdkVersion 设置 30 后保持现状。...Q: 如果应用没有访问照片、视频或音频文件,是否仍然需要请求 READ_EXTERNAL_STORAGE 权限?...Q: 想保存非媒体文件,但我不想在卸载应用时删除它们。需要使用 SAF 吗? A: 也许需要。 如果这些文件允许在应用外打开而无需通过您应用,那么系统文件选择器是较好选择。...Q: 可以将非媒体文件放置于其他文件夹中 (例如 Downloads 文件夹),而无需任何权限。这是一个 Bug 吗? A: 不是。

1K10
  • AndroidR兼容性适配指南

    请注意,应用在后台运行时启动前台服务通常无法访问位置信息、摄像头或麦克风。...对该文件具有读取访问权限任何应用都可以看到用户已将该文件标记为“收藏”。...用户无法在搭载 Android 11 设备上安装或更新仅通过 APK 签名方案 v1 签名应用。...我们认识到某些应用依赖于直接访问媒体文件路径代码或库。因此在 Android 11 上,具有读取外部存储权限应用程序能够访问范围存储环境中具有文件路径文件。...操作系统维护一个系统,将应用程序归因于每个媒体存储文件,因此应用程序可以读取/写入它们最初贡献给媒体存储文件,而无需存储权限。 Media Store DATA 列已被弃用,使用指南是什么?

    2K20

    详解Android10分区存储机制(Scoped Storage)适配教程

    以 Android 10(API 级别 29)及更高版本目标平台应用在默认情况下被赋予了对外部存储设备分区访问权限(即分区存储), 对外部存储文件访问方式重新设计,便于用户更好管理外部存储文件。...翻译成通俗语言,不管是使用requestLegacyExternalStorage=true方式以兼容模式运行还是降低targetSDK都无法在接下来2020年Android(API 29)10更新中被豁免...还有值得注意是以下两种情况比较特殊,不会受到分区存储影响: 如果应用最先安装在Android 10以下系统, 1) 然后系统通过Fota升级到Android 10 2) 应用通过更新升级到targetSdkVersion...MediaStore Api 否 外部存储 Downloads 无需权限 无需权限 通过存储访问框架SAF,加载系统文件选择器 否 外部存储 应用特定目录 无需权限 无法直接访问 getExternalFilesDir...专有目录存储 应用读取或写入应有专有的目录中文件时,不需要获取存储权限

    3.4K32

    Android 11 开发者常见问题 | FAQ・第一期

    清理类应用可以访问所有的外部存储,同样也无法访问其他应用专属目录。在分区存储中,应用专属目录可以理解和内部存储是等同,在 Android 11 中也是不可以去访问。...对于应用开发者,我们建议按照实践指南来开发,在每次需要使用权限时,应该检查是否获得相应权限,如果没有的话按照实践指南去申请对应权限。...目前对于哪一些 action 可以查询是没有限制相信在最终版本中是不允许对 android.intent.action.Main 进行查询无法获取结果。 03 Q: 灰名单限制具体是哪些?...SDK 01 Q: 对于 targetSdkVersion 非 Android 11 应用会有什么影响吗? 我们在每一次更新版本时候会考虑尽量减少对于应用影响。...而 App Bundle 是有比较严格下载大小限制无法实现下载 4GB 资源包,可以简单理解 OBB 是游戏打造,而 App Bundle 是其他应用打造

    2.1K40

    干货 | 携程Android 10适配踩坑指南

    以 Android 10(API 级别 29)及更高版本目标平台应用在默认情况下被赋予了对外部存储设备分区访问权限(即分区存储), 对外部存储文件访问方式重新设计,便于用户更好管理外部存储文件。...要点: Android Q文件存储机制修改成了沙盒模式 APP只能访问自己目录下文件和公共媒体文件 Android Q版本以下机型,还是使用老文件存储方式 Android Q及以上版本机型,所有应用均需要分区存储...MediaStore API在共享目录指定目录下创建文件或者访问应用自己创建文件,不需要申请存储权限 MediaStore API访问其他应用在共享目录创建媒体文件(图片、音频、视频), 需要申请存储权限...,未申请存储权限,通过ContentResolver查询不到文件Uri,即使通过其他方式获取到文件Uri,读取或创建文件会抛出异常; MediaStore API不能够访问其他应用创建媒体文件(pdf...而且,无论你App是否适配过Android Q(既targetSdkVersion是否大于等于29),均无法再获取到设备IMEI等设备信息。

    3.3K77

    Android 14适配Google play截止时间临近,适配注意点和经验

    4、 区域偏好设置:Android 14 允许用户个性化设置温度单位、每周第一天以及数字系统,并通过 API 和 Intent 供开发者读取这些偏好设置。...适配 截止8月底,所有提交至 Google Play 商店应用更新都必须面向 Android 14 进行适配,即 targetSdkVersion 必须设置 34 或更高版本,才能保持上架状态;同时...安全性加强 1、 最低可安装目标API级别:从Android 14开始,targetSdkVersion低于23应用无法安装,以提高安全性和隐私性 。...用户体验改进 1、 部分访问权限:用户可以授予应用对其库中特定图像和视频访问权限,而不是所有媒体访问权限 。...2、 全屏intent限制:为了防止垃圾广告和凭据钓鱼式攻击,只有提供通话和闹钟功能应用才能获得发送全屏通知权限

    21210

    Android 10(Q)11(R) 分区存储适配

    大部分应用都会请求 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE 存储权限,来做一些诸如在 SD 卡中存储文件或者读取媒体文件等常规操作。...应用调用此 intent 后,用户会看到一个对话框,请求用户同意应用更新或删除指定媒体文件。 2....无论设备后续是否升级搭载 Android 10 或更高版本,或者应用后续是否更新以 Android 10 或更高版本目标平台,此兼容性行为均适用。...意思就是在新系统新安装应用才会启用,覆盖安装会保持传统分区模式,例如: 系统通过 OTA 升级到 Android 10/11 应用通过更新升级到 targetSdkVersion >= 29 补充 Q...Q可以在媒体集文件夹下创建文档,就可以避开权限问题了? A:官方文档上写了只能创建相应类型媒体/文件,具体如何限制,没有说明。

    2.3K30

    干货 | Trip.com Android 11 适配之旅

    Google Play 商店在 2021 年第 3、4 季度正式加强对应用 targetSdkVersion 限制,要求应用必须以 API 级别 30 (Android 11) 或更高版本目标运行环境...在分区存储开启之后,将受到以下限制: 私有目录访问权限不变 可以直接访问本应用共享媒体文件 可以申请权限访问其他应用共享媒体文件 可以在弹窗确认后修改或删除其他应用共享媒体文件 外置存储媒体文件不能直接访问...从后台发送自定义 Toast 无法弹出 Toast 自定义能力受限,setView() 被标废弃 getView() 方法返回 null 以下方法返回值并不反映实际值: getHorizontalMargin...推荐适配方式:满足分区存储条件时,当有性能要求时,使用 MediaStore 来读取媒体文件,无性能要求仍可以通过File来读取。写入场景较少,单独适配。...其次,应用私有目录对于 APP 来说,是无需存储权限即可访问,也就意味着这个配置读取不依赖于运行时授权,在自动化阶段是非常方便好用

    1.7K20

    Android Q Beta 2 已上线!我们来看看都做了哪些更新

    除用户隐私方面的特性更新之外,Android Q 还为开发者们带去了许多新功能,如折叠屏增强项、新网络连接 API、全新媒体解码器、摄像头新功能、NNAPI 扩展、Vulkan 1.1 图形支持等等。...因此,使用共享文件应用可能会无法正常工作,比如说,影像库及选择器、媒体浏览和文件储存。 我们建议您尽早开始使用分区储存特性。请阅读开发者指南,获取更多技术细节并学习如何处理关键用例。...7.3 英寸折叠平设备切换折叠/展开状态 在平台方面,我们对onResume和onPause 进行了多项改进,以便 multi-resume 提供更好支持,此外,我们还添加了应用获得焦点后通知功能...轻松上手 Android Q Beta 本次更新包含适用于所有 Pixel 设备和 Android 模拟器 Beta 2 系统镜像文件,以及更新版 SDK 和工具。...接下来,请您尽快将应用 targetSdkVersion 更新至 'Q',以便在应用中测试 Android Q 全部隐私及安全特性,以及其它目标平台 Q 行为变更。

    1K60

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    安全方面 在 Android14 系统手机上,将无法安装 targetSdkVersion < 23(低于Android6.0) App。 媒体包名称在 Android14 上可能会被隐藏。...这些信息将在 Android14上被隐藏,除非满足以下条件之一: 1)存储媒体文件应用包名称始终对其他应用可见(自己开放给所有其他 App); 2)查询媒体应用获得了 QUERY_ALL_PACKAGES...权限(其他 App 向用户申请获得权限)。...用户体验方面 5.1 可单独对照片和视频访问权限进行授权 如果你 App 以 Android13 或更高版本目标平台(即 targetSdkVersion >= 33),且在 Android14 设备上运行时...小结:开发者不用管,新权限很鸡肋,暂时用不上,之前读取照片和视频相关逻辑也不用改。

    3.9K10

    Android Q Beta 正式发布 | 精于形,安于内

    在 Google Play Protect 和运行时权限等技术基础上,Android Q 添加了多项隐私及安全防护功能,以及一系列精彩纷呈新特性与优化项,如折叠屏增强、新网络连接 API、全新媒体解码器...为了帮助开发者顺利适配折叠屏及大屏设备,Android Q 引入了多项改进,比如说我们更新了 onResume 和 onPause 工作模式,以便 multi-resume 提供更好支持,另外我们还添加了当应用获得焦点后通知功能...从下半年开始,Google Play 将要求所有新应用及更新targetSdkVersion 设置 28 (Android 9 Pie)。...下一步,请尽快将应用 targetSdkVersion 设置 'Q' ,测试应用是否可顺利支持 Android Q安全与隐私特性,以及其他行为变更。...我们计划在预览版阶段定期更新预览版系统镜像文件和 SDK,并在将来几个 Beta 版中,陆续推出更多新功能,敬请期待!

    1.3K40

    Android 11适配攻略

    照片、视频、音频这类媒体文件。使用MediaStore 访问,无法直接使用File。访问其他应用媒体文件时需要READ_EXTERNAL_STORAGE权限。 其它目录。...同时不能请求其它权限,否则系统会抛出异常(在没研究Android 11适配时候,就已经发现了这个bug,当时以为是系统bug,还截了两张图,后面仔细查看,找资料才发现是Android 11变更...在之前接入微信支付时候,文档就有提示Android 11 第三方应用无法拉起应用适配,适配方案在主工程AndroidManifest.xml 中增加 标签。...好在用户授予权限之后,虽然app会被杀死,但是安装页面依然会弹出。 电话号码 应用在读取电话号码时,使用 READ_PHONE_STATE 权限。...用小米手机打开无线调试直接提示”由于某个应用遮挡了权限请求界面,因此设置应用无法验证您回应“,目前还没有解决,有知道解决大佬留言哈。

    3.9K11

    AndroidQ兼容性适配指南

    , 若获取空的话则使用UUID.randomUUID().toString()获得一个随机ID并存储起来, 该ID保证唯一, App卸载重装之后就会改变。...如果应用以Android 10或更高版本目标平台,则您必须在应用清单文件中声明ACCESS_BACKGROUND_LOCATION权限并接收用户权限,才能在应用位于后台时接收定期位置信息更新。...如果返回状态 MEDIA_MOUNTED,那么您就可以在外部存储空间中读取和写入应用专属文件。如果返回状态 MEDIA_MOUNTED_READ_ONLY,您只能读取这些文件。...,未申请存储权限,通过 ContentResolver 查询不到文件 Uri,即使通过其他方式获取到文件 Uri,读取或创建文件会抛出异常; MediaStore API 不能够访问其他应用创建媒体文件...设备从Android Q之前版本升级到Android Q,已安装APP获得Legacy View视图。

    7K30

    Android 11新特性,Scoped Storage又有了新花样

    本文同步发表于我微信公众号,扫一扫文章底部二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。...在Android 11中以上配置依然有效,仅限于targetSdkVersion小于或等于29情况。...拥有对整个SD卡读写权限,在Android 11上被认为是一种非常危险权限,同时也可能会对用户数据安全造成比较大影响。 文件浏览器就是要对设备整个SD卡进行管理,这怎么办呢?...不过还有一点需要注意,即使我们获得了管理SD卡权限,对于Android这个目录下很多资源仍然是访问受限,比如说Android/data这个目录在Android 11中使用任何手段都无法访问。...不过随着后来更多思考,发现这并不是一个无法解决问题,并且解决方案还非常简单。 为什么呢?

    1.4K20

    Android权限检查API checkSelfPermission失效问题为什么targetSdkVersion < 23 Context checkSelfPermission失效target

    =23支持动态权限管理,那就更新动态权限,并将其持久化到runtime-permission.xml...中,并更新其granted值,如果targetSdkVersion<23 ,也即是不知道6.0动态管理,那就只更新AppOps,这是4.3引入动态权限管理模型,不过这里主要是将权限持久化到appops.xml...读取之后,当用户操作权限时候,也会随机更新这里标记,只看下targetSdkVersion<23, public boolean grantRuntimePermissions(boolean...对于Android6.0之前ROM,虽然不能检测,完全可以直接用服务,不会崩溃,因为如果真需要鉴权,它鉴权时机其实是在服务使用时候。

    2.7K30

    Android 10适配要点,作用域存储

    另外,我们应用程序向媒体库贡献图片、音频或视频,将会自动拥有其读写权限,不需要额外申请READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。...而如果你要读取其他应用程序向媒体库贡献图片、音频或视频,则必须要申请READ_EXTERNAL_STORAGE权限才行。...仅仅获得Uri仍然是不够,我们还需要向该Uri所对应图片写入数据才行。...另外,存放在关联目录下文件只能被当前应用程序所访问,其他程序是没有读取权限。...由于我们是没有权限修改第三方SDK,因此最简单直接办法就是等待第三方SDK提供者对这部分功能进行更新,在那之前我们先不要将targetSdkVersion指定到29,或者先在AndroidManifest

    2.2K10
    领券