Android 11及以上出现 Intent.resolveActivity(context.getPackageManager()) == null的处理

这篇具有很好参考价值的文章主要介绍了Android 11及以上出现 Intent.resolveActivity(context.getPackageManager()) == null的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、使用场景: App调用系统相机拍照设置图片。

2、问题描述: targetSdkVersion >= android 11的之后,以下代码captureIntent.resolveActivity(context.getPackageManager()) 直接返回了null。

	// 拉起系统相机
	Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
	//判断相机是否正常
	if (captureIntent.resolveActivity(context.getPackageManager()) != null) {
		....
	}

3、系统环境:Android 11targetSdkVersion == 33

4、解决方案:

(1)调用系统应用时:

方案1:在清单文件中添加queries标签。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demo">
	<!-- 判断相机是否可用 -->
    <queries>
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE"/>
        </intent>

        <intent>
            <action android:name="android.media.action.VIDEO_CAPTURE"/>
        </intent>
    </queries>    
</manifest>

方案2:使用hasSystemFeature方法进行判断相机是否可用。

if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
	//相机可用
}

(2)打开其他第三方app,比如:

<!--Android 11 版本为加强用户隐私保护引入较多变更-->
    <queries>
        <!-- 微信支付SDK-->
        <package android:name="com.tencent.mm" />
        <!-- 支付宝支付SDK-->
        <package android:name="com.eg.android.AlipayGphone" />
        <package android:name="hk.alipay.wallet" />
        <!--百度地图app-->
        <package android:name="com.baidu.BaiduMap" />
        <!--高德地图app-->
        <package android:name="com.autonavi.minimap" />
        <!--腾讯地图app-->
        <package android:name="com.tencent.map" />
        <!--淘宝-->
        <package android:name="com.taobao.taobao" />
        <!--天猫-->
        <package android:name="com.tmall.wireless" />
        <!--微博-->
        <package android:name="com.sina.weibo"/>
        <!--脸书-->
        <package android:name="com.facebook.katana"/>
        <!--WhatsApp-->
        <package android:name="com.whatsapp"/>
    </queries>

详细变更,可参考官方文档:

https://developer.android.com/training/basics/intents/package-visibility#system-packages-visible-automatically文章来源地址https://www.toymoban.com/news/detail-534515.html

到了这里,关于Android 11及以上出现 Intent.resolveActivity(context.getPackageManager()) == null的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android11及以上 文件读写权限申请

    Android11 读写权限申请 Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。项目中 build.gradle 的 targetSdkVersion = 29 ,会出现读写问题。 当 targetSdkVersion = 29,通过设置requestLegacyExternalStorage=“true”,还能解决。 当 targetSdkVersion = 30后,需要申请所有文件

    2023年04月10日
    浏览(60)
  • android 11及以上保存图片视频到相册

    Android 10之前版本主要步骤 请求读写权限 图片/视频下载到/storage/emulated/0/Android/data/包名/xxx 复制到系统相册目录下 扫描媒体库 Android 10及以上版本主要步骤 请求读写权限 图片/视频下载到/storage/emulated/0/Android/data/包名/xxx 创建ContentValues,写入要保存的信息 调用ContentResolver插入

    2024年02月11日
    浏览(44)
  • Android 11及以上 showSoftInput 没有效果解决方式

    笔者在使用带输入框的AlertDialog时需要将输入框立即显示出来,发现在安卓11 (API 30)及以上版本使用传统的显示输入法代码失效,查找后发现新的方式。 安卓11 (API 30)及以上版本无法调用以下代码无法显示输入框并在控制台找到以下提示信息。 信息提示 解决方式 使用新的方式

    2024年02月13日
    浏览(135)
  • android 11及以上如何通过包名跳转APP

    下面是通过包名跳转到其他APP的代码,以微信APP包名为例: 通过日志可知道,intent为null,当包名错误或者该APP未配置启动Activity时,就会为null,为啥呢? 经过一晚上的上网查询,找到答案了,如下: Android 11以下,上述代码就可以跳转,但是11及以上,查询包名相关的方法都

    2024年01月25日
    浏览(46)
  • Android 11以上获取不到第三方app是否安装

    开年第一篇,处理了一下年前的小问题。 问题:本地app跳转到第三方app地图进行导航,获取不到第三方地图是否安装。 解决: 1.添加包名  This can be done by adding a  queries  element in the Android manifest.在app下的manifest文件内manifest标签下添加 queries标签设置包名 2.MapUtil工具类 3.调用

    2024年02月19日
    浏览(57)
  • android studio开发——android11版本以上权限动态申请问题,包括文件读写、图片、相机的调用

    用于android手机的升级,现在已经是android13版本了,对于权限问题可能更加敏感了,前段时间开发发现之前的方法已经不再适用于android11以后的版本了 读写权限申请最好是跳转到设置中进行才是最好了,下面我们开始进行 首先是AndroidManifest.xml文件的权限 然后这里讲解一下权

    2024年02月10日
    浏览(58)
  • 手机无法访问”xxx”目录(Android 11及以上授予文件管理权限)的解决方法

    Android11改变了此前安卓系统对文件管理的规则,在Android11上,文件读写变成了特殊权限。应用默认只能读写自己的目录/android/data/包名,这就导致我们想修改某个文件里的内容,结果却没有读写权限。本文主要提供一种解决方法——root+adb。 进入adb+ROOT权限开启 我们进入 adb s

    2024年02月16日
    浏览(61)
  • 【Android】-- Intent(显式和隐式Intent)

    什么是Intent? Intent是各个组件之间信息沟通的桥梁,它用于Android各组件之间的通信,主要完成下列工作: 标明本次通信请求从哪里来、到哪里去、要怎么走。 发起方携带本次通信需要的数据内容,接收方从收到的意图中解析数据。 发起方若想判断接收方的处理结果,意图

    2023年04月09日
    浏览(45)
  • Android页面跳转(Intent)

    布局 代码 隐式意图 没有明确指定组件名的Intent为隐式意图,系统会根据隐式意图中设置的动作(action)、类别(category)、数据UIL等来匹配最合适的组件。 首先在清单文件中使用意图过滤器设置活动的名字 action android:name=“HomeActivity” / category android:name=“android.intent.categ

    2023年04月09日
    浏览(36)
  • 无涯教程-Android Intent Standard Extra Data函数

    下表列出了各种重要的Android Intent Standard Extra Data。您可以查看Android官方文档以获取额外数据的完整列表- Sr.No Extra Data Description 1 EXTRA_ALARM_COUNT 用作AlarmManager intents(意图)中的int Extra字段,以告诉正在调用的应用程序intents(意图)释放了多少未决警报。 2 EXTRA_ALLOW_MULTIPLE 用于指示

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包