「配置应用的可见性」功能使用教程

引言

对于「应用可见性」这一概念,可能很多开发者小伙伴还不是很熟悉。简单举一个很典型的场景例子,当你开发的应用需要调起第三方应用时,这里就涉及到应用可见性的问题了,如果不配置相关的应用可见性,则你的应用是无法顺利调起第三方应用或页面的。

在 Android 中,应用程序可以通过发送隐式意图(例如打开网页或分享内容)与其他应用程序进行交互。然而,在 Android 11 及以上版本中,系统不再自动解析所有的隐式意图目标;相反,开发者需要明确声明他们想要与哪些应用交互,这就是应用可见性这一概念的由来。

应用可见性(Package Visibility)是Android 11 (API level 30) 引入的一项隐私保护特性,旨在限制应用程序对其他已安装应用的了解。这项功能确保一个应用不能轻易地获取设备上所有其他应用的信息,除非这些信息对于该应用的功能是必要的。通过这种方式,它减少了不必要的数据收集,并增强了用户隐私。为了使应用能够查询特定的应用程序或组件,必须在 AndroidManifest.xml 文件中使用 元素来声明。这允许开发者指定他们的应用可以与之通信的应用包名、意图模式或其他条件。

然而,在YonBuilder移动开发中,引擎框架封装了底层架构,相关的配置文件并不对开发者暴露,所以开发者是无法通过直接编辑的方式,去修改AndroidManifest.xml文件的。开发者需要通过YonBuider移动开发提供的专门页面,去定义相关的应用可见性。

本文主要目的,就是介绍在YonBuilder移动开发技术体系中,如何去定义声明应用的可见性。

「配置应用可见性」的页面功能使用

页面访问路径

登录YonBuilder移动开发云端工作台,进入应用详情页,切换到「端设置」页面,拉取到页面底部,就可以看到「配置应用可见性」的配置功能版块了。

在这里插入图片描述

「配置应用可见性」页面相关配置参数介绍

通过页面截图,我们可以看到在「配置应用可见性」版块部分有Package NameIntentProvider三个配置选项卡,下面我们介绍一下,具体什么场景使用哪一种配置选项卡进行相关的配置。

在引言中,我们提到过通过在 AndroidManifest.xml 文件中使用 元素来声明应用可见性,Package NameIntentProvider这三种配置就是主要的 内可以声明的应用可见性方式。

  • Package Name:主要用于直接引用某个特定的应用程序或其组件

    如果你的应用需要启动另一个特定的应用,例如地图类应用、微信等,就需要使用Package Name选项面板,去配置声明该应用的包名。

    平台已经内置了当前市面上当前常见的热门应用,可以点击「选择热门应用」输入框右侧的下拉箭头进行快速选择(如果第一次使用该功能,需要点击右下角的「编辑」按钮进入编辑状态)

    在这里插入图片描述

    如果你想调起的应用并不在热门应用下拉列表中时,可以进行手动添加(点击右侧的「+」按钮,可以增加新的一行)。

    在这里插入图片描述

    • 被检测应用名称:这个名称主要是方便开发者配置多了以后,自己识别区分使用,可以随意定义,不影响编译后的代码;

    • 安卓配置被测试应用的配置包名:这个是本功能的核心定义,必须填写想要调用的第三方目标应用的实际包名。如果目标应用是一个YonBuilder移动开发的应用,则该报名就是「APP证书」中android证书的报名。

      PS:如果你不知道目标应用的包名,简单方式可以通过搜索引擎去直接搜索应用名称加上关键词“包名”,例如,“微信 包名”。另外也可以通过命令行工具 adb(需要电脑和USB线)获取。具体是步骤如下:

      1. 启用USB调试:在手机上前往“设置” > “关于手机”,连续点击“版本号”七次以激活开发者选项。然后返回设置主菜单,进入“开发者选项”,开启“USB调试”。
      2. 连接设备:使用USB线将你的Android设备连接到电脑。
      3. 打开命令提示符或终端:在电脑上打开命令行工具(Windows用户可以使用CMD或PowerShell,macOS/Linux用户可以使用Terminal)。
      4. 输入以下命令:adb devices 确认设备已正确连接。
      5. 列出所有已安装的应用程序及其包名:adb shell pm list packages ,这个命令会输出一个包含所有已安装应用包名的列表。
      6. 过滤特定类型的应用:如果你想只看用户安装的应用(而非系统预装的应用),可以添加 -3 参数:adb shell pm list packages -3
      7. 查找具体应用的包名:如果知道应用的名字或者部分信息,可以通过管道符结合 grep 来筛选结果。例如,查找微信的包名:adb shell pm list packages | grep weixin
  • Intent:用来表达意图或动作,以及匹配那些能够执行特定任务的应用程序集合。

    当你的应用需要打开某种类型的文件时,你可以声明意图过滤器来查找能够处理这些文件的应用。

    如果你当前需要使用第三方的应用打开PDF文件,在原生xml中的定义如下:

    <queries><intent><action android:name="android.intent.action.VIEW" /><data android:mimeType="application/pdf" /></intent>
    </queries>
    

    则对应到YonBuilder移动开发平台的「配置应用可见性」页面,需要切换到Intent配置选项卡,按以下截图填写即可。

    在这里插入图片描述

    同样的「action name」中的下拉列表有常见的各种常见的配置intent,具体需要按实际场景需要进行选择即可,这里就不详细展开描述了。

    PS: 关于这块功能,之前我有一个发布教程是YonBuilder移动开发——调用手机系统的浏览器打开网页,就是使用的本配置项功能,有兴趣的同学可以去参考了解一下。

  • Provider:特指内容提供者,它是用于跨应用程序间数据共享的一种机制。

    如果要读取来自其他应用的数据(如联系人信息),则需要声明相应的 Content Provider。在实际开发中,目前这种需求场景并不多见。

    这里举例说明一下,例如如果要读取联系人信息,在原生xml中定义如下:

    <queries><provider android:authorities="com.example.provider.contacts" />
    </queries>
    

    则对应到YonBuilder移动开发平台的「配置应用可见性」页面,需要切换到Provider配置选项卡,按以下截图填写即可。

    在这里插入图片描述

注意事项

  • 隐私保护:确保遵循当地法律法规,不要滥用此信息侵犯他人隐私。

  • 最小化声明:尽量减少不必要的 声明,只包含对你应用核心功能必要的部分。

  • 兼容性考虑:虽然 是从 API level 30 开始引入的,但在较低版本的 Android 上,它会被忽略,因此不会影响旧设备上的应用行为。

  • 测试覆盖:确保修改后的配置经过充分测试,特别是在不同的 Android 版本上运行,以保证应用的正常运作。

总结

以上就是关于在YonBuilder移动开发技术体系中,如何去定义「配置应用可见性」功能的具体使用介绍。本文仅仅是抛砖引玉,简单介绍了相关参数的配置使用,在具体的场景开发中,开发者可能会遇到多种多样的场景需求,具体就需要开发者结合相关的概念定义,动态灵活的去进行相关功能参数的配置了。不过可以明确的是,无论场景需求如何变化,还是始终在这三类定义的包含中,如果开发者伙伴具体在开发中不知道如何选择,可以先通过搜索引擎搜索一下原始的xml是如何配置的,然后再根据不同的标签选择对应的选项卡进行配置即可。最后配置完成后,记得保存并重新编译新的版本才能生效!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flask flask-socketio创建一个网页聊天应用

应用所需环境&#xff1a; python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…

[计算机网络]唐僧的”通关文牒“NAT地址转换

1.NAT&#xff1a;唐僧的通关文牒 在古老的西游记中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;终于取得了真经。然而&#xff0c;他们并不是一开始就获得了通关文牒&#xff0c;而是经过了重重考验&#xff0c;最终得到了国王的认可&#xff0c;才顺利通过了各个关…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空&#xff0c;意味着结束遍…

【Windows版】opencv 和opencv_contrib配置

一、参考资料 &#xff08;四十一&#xff09;CMakeVSopencv/opencv_contrib 环境配置 从源码安装&#xff2f;penCV&#xff0c;使用python windowsvscodeopencv源码安装配置 二、关键步骤 1. opencv与opencv_contrib版本对齐 下载 opencv 下载 opencv_contrib opencv…

2014年IMO第4题

△ A B C \triangle ABC △ABC 中, B C BC BC 上有一点 P P P 满足 ∠ B A P = ∠ A C B \angle BAP=\angle ACB ∠BAP=∠ACB, 还有一点 Q Q Q 满足 ∠ A = Q A C = ∠ A B C \angle A=QAC=\angle ABC ∠A=QAC=∠ABC. 分别延长 A P AP AP, A Q AQ AQ 一倍至 M M M, N …

基于微信小程序的乡村旅游系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

拆解一个微型气泵了解工作原理

原因 在焊接电路板时&#xff0c;测试打印后想要拆卸错误的板子上的元件&#xff0c;但每次拆卸过程中吸锡器手动按压到手疼。忽然看见一种小型气泵&#xff0c;不知道能不能做一个电动的吸锡器。 拆卸过程 第一步先把前盖板拆掉&#xff0c;这一步很好办到&#xff0c;就三…

SAP HCM 考勤时间冲突到分 源码分析

导读 时间冲突:SAP实施顾问应该都知道时间约束的概念&#xff0c;时间约束是按照主键作为分隔&#xff0c;其中信息类型有个seqnr的流水号字段&#xff0c;是控制时间约束的主要条件&#xff0c;今天分析的2001信息类型&#xff0c;如果日期相同&#xff0c;请假的开始时间与结…

《庐山派从入门到...》板载按键启动!

《庐山派从入门到...》板载按键启动&#xff01; 《庐山派从入门到...》板载按键启动&#xff01; 视频内容大致如下 我们之前了解了GPIO的输出模式使用方法&#xff0c;并且成功点灯&#xff0c;很明显本篇要来分享的自然是GPIO的输入模式 正好回顾一下之前学的python基础包…

分布式协同 - 分布式事务_TCC解决方案

文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC&#xff08;Two-Phase Commit&#xff0c;二阶段提交&#xff09;3PC&#xff08;Three-Phase Commit&#xff0c;三阶段提交&#xff09;TCC&#xff08;Try-Confirm-Cancel&#xff09;2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…

YOLO-World:Real-Time Open-Vocabulary Object Detection

目录 摘要 Abstract YOLO-World 1 模型架构 1.1 Text Encoder 1.2 YOLO Backbone 2 RepVL-PAN 2.1 T-CSPLayer 2.2 I-Pooling Attention 2.3 预测 3 消融实验 3.1 预训练数据 3.2 RepVL-PAN的消融实验 3.3 文本编码器 4 效果展示 4.1 零样本 4.2 根据词汇表检…

MySQL -- 库的相关操作

目录 查看数据库 创建数据库 直接创建&#xff1a; 加约束条件 if not exists 字符集和校对规则 什么是字符集 什么是校对规则 校对规则的主要功能 校对规则的特性 查看指定的数据库使用的字符集和校对规则&#xff1a; 比较是否区分大小写字母差异 显示创建语句 …

【spring-cloud-gateway总结】

文章目录 什么是gateway如何导入gateway依赖路由配置gateway配置断路器导包配置 什么是gateway 在微服务架构中&#xff0c;gateway网关是一个服务&#xff0c;它作为系统的唯一入口点&#xff0c;处理所有的客户端请求&#xff0c;然后将这些请求路由到适当的服务。提供了几个…

mac iterm2 使用 lrzsz

前言 mac os 终端不支持使用 rz sz 上传下载文件&#xff0c;本文提供解决方法。 mac 上安装 brew install lrzsz两个脚本 注意&#xff1a;/usr/local/bin/iterm2-send-zmodem.sh 中的 sz命令路径要和你mac 上 sz 命令路径一致。 /usr/local/bin/iterm2-recv-zmodem.sh 中…

数智化医院分布式计算框架融合人工智能方向初步实现与能力转换浅析

人工智能中心计算机 一、引言 1.1 研究背景与意义 近年来&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;与大数据技术的迅猛发展为医疗行业带来了前所未有的变革机遇。医疗领域积累了海量的数据&#xff0c;如电子病历&#xff08;Elec…

airflow docker 安装

mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…

【数据安全】如何保证其安全

数据安全风险 数字经济时代&#xff0c;数据已成为重要的生产要素。智慧城市、智慧政务的建设&#xff0c;正以数据为核心&#xff0c;推动城市管理的智能化和公共服务的优化。然而&#xff0c;公共数据开放共享与隐私保护之间的矛盾日益凸显&#xff0c;如何在确保数据安全的…

springboot463学生信息管理系统论文(论文+源码)_kaic

摘 要 使用旧方法对学生信息管理系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在学生信息管理系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的学…

postman读取文件执行

要从文件获取的变量 text 在pre-request 中写从文件获取数据的脚本。脚本实现了&#xff0c;设置了text默认值&#xff0c;从文件读取text列&#xff0c;将text存入环境变量 //获取text参数 var text "济南天气"; if(data.text){ text data.text } pm.environment.…