android使用相机 intent.resolveActivity returns null

这篇具有很好参考价值的文章主要介绍了android使用相机 intent.resolveActivity returns null。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

笔者使用java进行android开发,启动相机时 intent.resolveActivity returns null

takePictureIntent.resolveActivity(getPackageManager()) == null

详细问题

笔者使用如下代码启动相机

// 启动相机
    @SuppressLint("LongLogTag")
    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            cameraLauncher.launch(takePictureIntent);
        } else {
            Log.e("DiseaseAndPestDetectionActivity", "Camera app is not available to handle the intent");
        }
    }

控制台报错:

E/DiseaseAndPestDetectionActivity: Camera app is not available to handle the intent

解决方案

步骤1、 在package\app\src\main\AndroidManifest.xml中配置如下内容:
具体操作如下图所示:
android使用相机 intent.resolveActivity returns null,android,数码相机
具体代码:

<queries>
    <!-- Camera -->
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
</queries>

产生原因

问题产生的原因是在Android 11及更高版本中,由于引入了更严格的权限控制和隐私策略,应用需要通过 元素在清单文件中声明对其他应用组件的查询权限。以笔者的情况为例,由于笔者在应用中使用了相机 (MediaStore.ACTION_IMAGE_CAPTURE),因此需要声明对相机应用的查询权限。

解决原因

解决方案中的配置 <queries> 元素指定了应用需要查询相机应用的权限。这告诉系统,笔者的应用会查询 IMAGE_CAPTURE 意图,因此系统会提供与该意图匹配的应用列表。
此配置的目的是允许系统知道你的应用将使用与相机相关的功能,以便为用户提供更好的控制和隐私保护。

总结

笔者一年之前进行项目开发,尚未遇到上述情况,查询得知问题产生的原因是在Android 11及更高版本中,由于引入了更严格的权限控制和隐私策略,应用需要通过 元素在清单文件中声明对其他应用组件的查询权限。这种情况在开发中并不少见,平台从安全的角度出发,引入了更严格的权限控制和隐私策略。但同时,也增加的程序开发的负担。以至于很多开发框架,有时旧版本比新版本更受开发者欢迎。

参加文献

intent.resolveActivity returns null in API 30
产生原因与解决原因部分内容 部分参考chatgpt

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
android使用相机 intent.resolveActivity returns null,android,数码相机文章来源地址https://www.toymoban.com/news/detail-812374.html

到了这里,关于android使用相机 intent.resolveActivity returns null的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Android】-- Intent(显式和隐式Intent)

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

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

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

    2023年04月09日
    浏览(36)
  • 无涯教程-Android - Intents/Filters

    Android Intent 是要执行的操作的抽象描述。它可以与 startActivity 一起启动Activity,将 broadcastIntent 发送给任何BroadcastReceiver组件,并与 startService(Intent)或 bindService(Intent,ServiceConnection,int)与后台服务进行通信。 假设您有一个Activity,该Activity需要启动电子邮件客户端并使用Androi

    2024年02月10日
    浏览(33)
  • 无涯教程-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日
    浏览(52)
  • Android 13 针对 Intent filters 安全的再加强

    作者:李龙、TechMerger 君 在看这个变更之前,我们需要回忆下 Android 12 的一个安全性变更, 即声明了 intent-filter 的Activity、BroadcastReceiver、Service 必须声明 android:exported , 否则将会无法被启动。 Android 12 的这个变更是为了防止开发者在不知情的情况下,声明了一个 intent-filte

    2024年02月07日
    浏览(34)
  • Android Activity启动流程一:从Intent到Activity创建

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 学习前,建议有相关知识储备: 【Android 基础】 应用(Application)启动流程 通过本文你可以学习到Activity启动流

    2024年02月10日
    浏览(44)
  • Android Studio:Intent与组件通信实现页面跳转功能

    📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊ ✨个人主页:零小唬的博客主页 🥂欢迎大家 👍点赞 📨评论 🔔收藏 ✨作者简介:20级计算机专业学生一枚,来自宁夏,可能会去

    2024年02月05日
    浏览(54)
  • Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED

    Android API Level8以上的时候,程序可以安装在SD卡上。如果程序安装在SD卡上,那么在BOOT_COMPLETED广播发送之后,SD卡才会挂载,因此程序无法监听到该广播。 清单文件 目录下添加: android:installLocation=“internalOnly” android:installLocatio n的属性有\\\" auto \\\"、“ internalOnly ”、“ preferE

    2023年04月16日
    浏览(38)
  • Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决

    如何在一个应用程序中,启动另外一个应用程序?最近正有这样的需求,也踩了一个小坑。本节介绍使用Activity中\\\"android:exported\\\"属性来实现这种访问。 Activity中\\\"android:exported\\\"属性说明: 在程序清单AndroidMenifest.xml文件中,可以设置这个属性。 Android中的Activity中\\\"android:exported\\\"属

    2024年02月06日
    浏览(48)
  • Android之 Camera相机使用

    一 简介 1.1 随着信息时代的发展,相机在我们生活中使用越来越频繁,也成为手机的基本配置之一。相机可以用来拍照,拍视频,人脸识别,视频聊天,扫码支付,监控等常见领域 不管什么场景,基本原理都差不多,都要先通过相机采集原始数据,也就是二进制字节数据,我

    2024年02月15日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包