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

引言

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

在 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.mzph.cn/pingmian/64840.shtml

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

相关文章

Pytorch | 从零构建ResNet对CIFAR10进行分类

Pytorch | 从零构建ResNet对CIFAR10进行分类 CIFAR10数据集ResNet核心思想网络结构创新点优点应用 ResNet结构代码详解结构代码代码详解BasicBlock 类ResNet 类ResNet18、ResNet34、ResNet50、ResNet101、ResNet152函数 训练过程和测试结果代码汇总resnet.pytrain.pytest.py 前…

安装MongoDB,环境配置

官网下载地址&#xff1a;MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…

7.C语言 宏(Macro) 宏定义,宏函数

目录 宏定义 宏函数 1.注释事项 2.注意事项 宏(Macro)用法 常量定义 简单函数实现 类型检查 条件编译 宏函数计算参数个数 宏定义进行类型转换 宏定义进行位操作 宏定义进行断言 总结 宏定义 #include "stdio.h" #include "string.h" #incl…

基于高云GW5AT-15 FPGA的SLVS-EC桥MIPI设计方案分享

作者&#xff1a;Hello,Panda 一、设计需求 设计一个4Lanes SLVS-EC桥接到2组4lanes MIPI DPHY接口的电路模块&#xff1a; &#xff08;1&#xff09;CMOS芯片&#xff1a;IMX537-AAMJ-C&#xff0c;输出4lanes SLVS-EC 4.752Gbps Lane速率&#xff1b; &#xff08;2&…

【漏洞复现】CVE-2023-29944 Expression Injection

漏洞信息 NVD - cve-2023-29944 Metersphere v1.20.20-lts-79d354a6 is vulnerable to Remote Command Execution. The system command reverse-shell can be executed at the custom code snippet function of the metersphere system workbench. 背景介绍 MeterSphere is…

在VBA中结合正则表达式和查找功能给文档添加交叉连接

在VBA中搜索文本有两种方式可用&#xff0c;一种是利用Range.Find对象&#xff08;更常见的形式可能是Selection.Find&#xff0c;Selection是Range的子类&#xff0c;Selection.Find其实就是特殊的Range.Find&#xff09;&#xff0c;另一种方法是利用正则表达式&#xff0c;但…

AW36518芯片手册解读(3)

接前一篇文章&#xff1a;AW36518芯片手册解读&#xff08;2&#xff09; 二、详述 3. 功能描述 &#xff08;1&#xff09;上电复位 当电源电压VIN降至预定义电压VPOR&#xff08;典型值为2.0V&#xff09;以下时&#xff0c;该设备会产生复位信号以执行上电复位操作&#x…

【mysql】唯一性约束unique

文章目录 唯一性约束1. 作用2. 关键字3. 特点4. 添加唯一约束5. 关于复合唯一约束 唯一性约束 1. 作用 用来限制某个字段/某列的值不能重复。 2. 关键字 UNIQUE3. 特点 同一个表可以有多个唯一约束。唯一约束可以是某一个列的值唯一&#xff0c;也可以多个列组合的值唯一。…

实操给桌面机器人加上超拟人音色

前面我们讲了怎么用CSK6大模型开发板做一个桌面机器人充当AI语音助理&#xff0c;近期上线超拟人方案&#xff0c;不仅大模型语音最快可以1秒内回复&#xff0c;还可以让我们的桌面机器人使用超拟人音色、具备声纹识别等能力&#xff0c;本文以csk6大模型开发板为例实操怎么把超…

SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟 这里RTC做了两个定时器一个是12秒,一个是185秒: #define RTCEVT_NUM ((uint8_t) 0x02)//当前定时器事件数#define RTCEVT_12S ((uint32_t) 0x0000002)//定时器1s事件 /*整分钟定时器事件&#xff0c;因为其余的…

LearnOpenGL学习(碰撞检测,粒子)

完整代码见&#xff1a;zaizai77/OpenGLTo2DGame: 基于OpenGL制作2D游戏 物体本身的数据来检测碰撞会很复杂&#xff0c;一半使用重叠在物体上的更简单的外形来检测。 AABB - AABB 碰撞 AABB代表的是轴对齐碰撞箱(Axis-aligned Bounding Box)&#xff0c;碰撞箱是指与场景基…

SwinTransformer 改进:添加SelfAttention自注意力层

目录 1. SelfAttention自注意力层 2. SwinTransformer SelfAttention 3. 代码 1. SelfAttention自注意力层 Self-Attention自注意力层是一种在神经网络中用于处理序列数据的注意力机制。它通过对输入序列中的不同位置进行关注&#xff0c;来计算每个位置与其他位置的关联程…

c++ ------语句

一、简单语句 简单语句是C中最基本的语句单元&#xff0c;通常以分号&#xff08;;&#xff09;结尾&#xff0c;用于执行一个单一的操作。常见的简单语句类型有&#xff1a; 表达式语句&#xff1a;由一个表达式后面加上分号构成&#xff0c;用于计算表达式的值或者执行具有…

【他山之石】The SVG path Syntax: An Illustrated Guide:SVG 中的 path 语法图解指南

写在前面 本文为我的自学精译专栏《CSS in Depth 2》第 086 篇文章、在介绍 CSS 的 clip-path 属性的用法时作者提到的一篇延伸阅读材料&#xff0c;以图文并茂的形式系统梳理了 SVG path 属性的方方面面。其中最为精彩的是文中列举的大量使用案例。为了方便查找&#xff0c;特…

小型 Vue 项目,该不该用 Pinia 、Vuex呢?

说到 Vue3 的状态管理&#xff0c;我们会第一时间想到 Pinia、Vuex&#xff0c;但是经过很长一段时间的 Vue3 项目开发&#xff0c;我逐渐发现&#xff0c;我们真的有必要用 Pinia、Vuex 这类的状态管理工具吗&#xff1f; 带着这样的疑惑&#xff0c;我首先是想知道一下 Pini…

c4d动画怎么导出mp4视频,c4d动画视频格式设置

宝子们&#xff0c;今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的&#xff0c;让你能轻松理解和掌握&#xff0c;不管是理论基础&#xff0c;还是实际操作和技能技巧&#xff0c;都能学到&#xff0c;快速入门然后提升自己哦。 c4d动…

EfficienetAD异常值检测之瓷砖表面缺陷检测(免费下载测试数据集和模型)

背景 当今制造业蓬勃发展&#xff0c;产品质量把控至关重要。从精密电子元件到大型工业板材&#xff0c;表面缺陷哪怕细微&#xff0c;都可能引发性能故障或外观瑕疵。人工目视检测耗时费力且易漏检&#xff0c;已无法适应高速生产线节奏。在此背景下&#xff0c;表面缺陷异常…

将Minio设置为Django的默认Storage(django-storages)

这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明 静态文件 Django默认的Storage是本地&#xff0c;项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独…

Redis生产实践中相关疑问记录

1. Redis相关疑问 1.1. redis内存使用率100% 就等同于redis不可用吗&#xff1f; 正常使用情况下&#xff0c;不是。 redis有【缓存淘汰机制】&#xff0c;Redis 在内存使用率达到 100% 时不会直接崩溃。相反&#xff0c;它依赖内存淘汰策略来释放内存&#xff0c;确保系统的…

量化交易——RSI策略(vectorbt实现)

本文为通过vectorbt&#xff08;以下简称vbt&#xff09;实现量化交易系列第一篇文章&#xff0c;通过使用vbt实现RSI策略从而熟悉其代码框架。 关于本文所使用数据的说明 由于vbt官方文档提供的入门案例使用的数据是通过其内置的yfinance包获取&#xff0c;在国内无法直接访…