Android 11 适配 软件包可见性

Android 11 软件包可见性(Package Visibility)适配 软件包可见性只是对有些场景有影响的。总的来说就是,只要是查询别的app的信息都会受到影响的。Apps that are visible automatically 中说明了哪些情况下软件包可见性是自动获取的。 startActivity() method is unaffected by the system’s package visibility behavior, you don’t need to add a element to your app’s manifest. Open URLs in 阅读详情

Android 11 软件包可见性 适配

一、软件包可见性说明

如果应用以 Android 11(API 级别 30)或更高版本为目标平台,在默认情况下,系统会自动让部分应用对您的应用可见,但会隐藏其他应用。
通过让部分应用在默认情况下不可见,系统可以了解应向应用显示哪些其他应用,这样有助于鼓励最小权限原则。

注意:

  1. 如果您的应用以 Android 10(API 级别 29)或更低版本为目标平台,那么全部应用均会自动对您的应用可见。
  2. 即使您的应用以 Android 11(API 级别 30)或更高版本为目标平台,特定场景不会受影响。

1. 不受影响的特定场景

  • 实现 Android 核心功能的某些系统软件包,如媒体提供程序。
  • 使用 startActivityForResult() 方法启动其他应用的某个页面。
  • 通过 Content Provider 访问的应用。
  • 具有 Content Provider 的任何应用,且应用已被授予 URI 权限来访问该 Content Provider。
  • 可以使用隐式或显式 intent 来启动另一应用的 activity,无论这个应用是否对您的应用可见。

2. 受影响的方法列表


    // 检索可以为给定意图执行的所有 activity
    PackageManager.queryIntentActivities(intent, flag)
    
	// 检索可以匹配给定意图的所有服务
    PackageManager.queryIntentServices(intent, flag)
        
    // 检索可以处理给定意图广播的所有接收器
    PackageManager.queryBroadcastReceivers(intent, flag)
        
    // 查询内容提供者
    PackageManager.queryContentProviders(processName, uid, flag)

    // 获取为当前用户安装的所有软件包的列表。
    PackageManager.getInstalledPackages(flag)

	// 获取已安装的应用程序
	PackageManager.getInstalledApplications(flag)
    

二、软件包可见性配置

1. 检查是否有可用浏览器,例如需要打开外部浏览器

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
        </intent>
    </queries>
</manifest>

2. 检查设备能否打开给定文件,如需要打开 pdf、zip

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:mimeType="*/*" />
        </intent>
    </queries>
</manifest>

3. 创建自定义共享表单,如分享图片、文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="*/*" />
        </intent>
    </queries>
</manifest>

4. 显示自定义文字选择操作,如选中一段文字,进行复制、粘贴操作

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.intent.action.PROCESS_TEXT" />
            <data android:mimeType="text/plain" />
        </intent>
    </queries>
</manifest>

5. 连接到文字转语音引擎

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.intent.action.TTS_SERVICE" />
        </intent>
    </queries>
</manifest>

6. 连接到语音识别服务

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.speech.RecognitionService" />
        </intent>
    </queries>
</manifest>

7. 显示联系人的自定义数据行

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <!-- Allows the app to read the "contacts.xml" file from the other apps. -->
        <intent>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent>
        <!-- Allows the app to load an icon corresponding to the custom MIME type. -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data
                android:host="com.android.contacts"
                android:mimeType="vnd.android.cursor.item/*"
                android:scheme="content" />
        </intent>
    </queries>
</manifest>

8. 连接到媒体浏览器服务

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <intent>
            <action android:name="android.media.browse.MediaBrowserService" />
        </intent>
    </queries>
</manifest>

9. 配置访问 微信,支付宝,QQ,微博

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <!--微信-->
        <package android:name="com.tencent.mm" />

        <!--支付宝-->
        <package android:name="com.eg.android.AlipayGphone" />
        <package android:name="hk.alipay.wallet" />

        <!--QQ-->
        <package android:name="com.tencent.qqlite" />
        <package android:name="com.tencent.mobileqq" />

        <!--新浪微博-->
        <package android:name="com.sina.weibo" />
    </queries>
</manifest>

10. 配置查询所有应用及与之交互(以上均可不配置,但 gp 会严格审核)

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

附 Github 源码:

AndroidManifest.xml

Android 11适配踩坑实录:从存储权限到软件包可见性,一个老项目的完整升级日记 本文详细记录了将老项目从Android 8.0升级到Android 11的完整适配过程,重点解决了存储权限体系重构、软件包可见性管理等核心挑战。通过Scoped Storage的渐进式适配策略和精准的权限控制方案,成功应对了Android 11的系统底层变更,为类似项目升级提供了实用攻略。 阅读详情

相关推荐

Android 11适配避坑实录:从‘软件包可见性’导致分享失败,到无线调试连接不稳的实战解决

本文深入解析Android 11适配中的关键挑战,包括软件包可见性机制导致的分享失败问题及无线调试连接不稳定的解决方案。通过详细的代码示例和最佳实践,帮助开发者高效应对Android 11的适配变更,提升应用兼容性和用户体验。

weixin_30855761的博客 441

政策更新 | 开发者如何处理软件包可见性

我们正在 Android 平台上进行多项变更来增强用户隐私和平台安全性,旨在为用户提供更安全的体验。以 Android 11 (API 级别 30) 或更高版本为目标的应用默认将只能获取过...

谷歌开发者 913

Android 软件包的可见性

通过使用不同的访问修饰符,我们可以精确控制软件包中的类和资源对其他代码的可见性。这种可见性的管理有助于确保代码的安全性和封装性,同时提供了良好的代码组织和模块化的能力。默认的可见性表示该软件包中的类和资源对当前软件包内的其他类可见,但对于其他软件包中的类是不可见的。:受保护的访问修饰符,表示该软件包中的类和资源对当前类及其子类可见。:公共的访问修饰符,表示该软件包中的类和资源对所有其他代码都可见。:私有的访问修饰符,表示该软件包中的类和资源只对当前类可见。访问修饰符,因此它们对于其他类都是可见的。

pytorchCode的博客 390

Android软件包可见性

Android11以后,除了默认的一些应用外,我们不能直接获取某些应用是否安装,不能获取手机中安装了哪些应用。

weixin_37219611的博客 290

Android 11中的包可见性和应用隐私保护

随着移动设备的普及,用户隐私保护变得越来越重要。在Android 11及更高版本中,Google引入了一项重要的安全功能——包可见性(Package Visibility),以增强用户隐私。今天我们将详细探讨这一功能的具体实现和应用场景。

m0_62153576的博客 268

AWS-解析mysql binlog同步数据方案

虽然是公有云的鼻祖,AWS在某些产品的实现却太不给力;可能是习惯了阿里云喂到嘴边的感觉,AWS很多方案需要自己折腾,蛋疼!比如这里要讲的mysql数据同步方案。 阿里云产品DTS,点几下就OK了,AWS,只能通过插件安装、配置、调试、蹚坑……,具体就是用msk的debezium插件连接器。没见识过的一脸懵逼,下面说下配置步骤和一些注意的坑。

sdmei 1406

Android 11权限适配:从‘单次授权’到‘软件包可见性’,一份给老项目的避坑清单

本文详细解析了Android 11权限适配中的关键变更,包括单次授权、后台位置权限和软件包可见性等核心问题,为老项目升级提供实战避坑指南。通过代码示例和案例分析,帮助开发者有效应对权限管理的新挑战,确保应用平稳过渡到Android 11。

weixin_30915275的博客 305

微波无源器件 功分器1 新型方波导双模无功功分器

本名证明了一种基于有着特定功能的(dedicated)T性匹配元件(散射件)的进化结点的新型波导双模两路功分器的可行性。这个散射件,有着面向三个部分的匹配部分,提供了等效功分并且朝着对应的输出端口传输矩形波导的两个TE10/TE01正交模式。所提出的设计紧凑,易于比例变化并且能够级联来获得。

qq_45245770的博客 1391

Android11适配 - 软件包可见性

Android11的包可见性 我们的应用常常会碰到与其他应用交互,比如登录功能,我们可能希望使用微信登录或者QQ登录,再比如分享,我们先判断是否安装了微信,然后决定是否展示微信的分享图标等等。这里我们有一个需求就是获取相关的软件包是否已经安装。 但是在Android11中,除了默认的一些应用外,我们不能直接获取到软件包是否已经安装了,换句话说我们安装了一个应用,但是我们调用 getInstalledApplications() 或 getInstalledPackages()的可能没有返回此包名。这就

weixin_44177244的博客 1049

COMSOL解的继承

COMSOL解的继承1. 应用场景2. 实现方法2.1. 添加研究步骤2.2. 引用研究 根据参考文献整理而来,原文见: http://blog.sina.com.cn/s/blog_4a0a8b5d010126w5.html https://www.zhihu.com/question/371867999/answer/1309194094 个人学习笔记,如有疏漏,欢迎补充 1. 应用场景 在COMSOL模拟中,一次求解之后往往遇到以下几种情况需要用到解的继承: 1)瞬态求解的继续运算。例如初始设定求解1

jessica0307的博客 1万+

Voxel Hashing技术解析:如何解决TSDF内存爆炸问题?

本文深入解析Voxel Hashing技术如何有效解决TSDF内存爆炸问题。通过动态内存分配和空间哈希函数设计,该技术将内存占用降低96.6%,同时保持高精度重建。文章详细介绍了GPU加速实现、现代系统演进及实践指南,为实时3D重建提供工程解决方案。

m2n3b4v5c6的博客 713

Android 11适配实战:从‘分区存储’到‘软件包可见性’,一个老项目的踩坑与填坑全记录

本文详细记录了Android 11适配过程中的实战经验,从分区存储到软件包可见性等关键变更,提供了全面的解决方案和代码示例。针对老项目升级中遇到的存储权限、应用交互等问题,分享了MediaStore API应用、MANAGE_EXTERNAL_STORAGE权限使用等实用技巧,帮助开发者高效完成Android 11适配工作。

weixin_30660027的博客 339

Vue3 与 Bpmn-js:打造现代化 BPMN 流程设计器

随着业务流程的复杂化,流程设计器成为企业级应用中不可或缺的一部分。BPMN(Business Process Model and Notation)是一种标准的业务流程建模语言,广泛应用于业务流程管理。本文将介绍如何使用 Vue3 和 Bpmn-js 打造一个现代化的 BPMN 流程设计器。

九天的专栏 2114

Android 11适配攻略

2020年6月11日,Google正式推送了Android 11 Beta版本,同年年9月9日正式发布。系统主要增强了聊天气泡,安全性和隐私性的保护,电源菜单,可以更好的支持瀑布屏,折叠屏,双屏和 Vulkan 扩展程序等

八归少年 4430

RV1126平台JD9366触摸屏驱动移植实战:从源码到烧录的完整指南

本文详细介绍了在RV1126平台上移植JD9366触摸屏驱动的完整流程,从环境准备、源码获取到驱动配置、内核编译、设备树设置以及固件烧录与测试验证。通过实战经验分享和常见问题排查,帮助开发者高效完成触摸屏驱动移植,适用于嵌入式Linux开发场景。

weixin_30872337的博客 408

尝试使用CubeMX做stm32开发之九:SYS配置

参考《STM32中文参考手册_V10》,研究CubeMX中有关SYS的配置

Forster-C的博客 9420

Android 11 变更及适配攻略

终于开始了Android 11的适配工作,记录一下,供需要的人参考。

唯鹿的博客 2万+

【AirPlay】苹果认证MFI学习

配件认证是一个过程,通过这个过程,可验证其配件符合MFi技术规范,并通过苹果指定的任何认证测试。MFi门户中的产品计划 "认证 "页面将指导你完成特定配件所需的认证步骤,并指出何时完成所有要求。在完成所有MFi认证要求之前,你不得制造、分发或销售任何配件。在开始MFi认证过程之前,你必须测试你的配件,以确保它符合最新的MFi技术规范,通过产品计划 "测试计划 "上的所有适用测试,并与它将声称具有兼容性的每个苹果设备兼容。

天天的博客 2275

在Android 11上aidl bindService 失败 返回false

此问题是由于未适配Android 11 新特性中的软件包可见性,所以导致bindService失败 所以,进行适配android 11的新特性即可解决

wqh_0625的博客 3388

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

前言 最近看到一条新闻,Android 11(version 30,Andorid R)最终Beta版 如期发布,看到这个新闻我知道我不能再拖了,再不好好准备好迎接Android11的到来,到时候迎接我的就是客户的指责,甚至老板的一封休书了 ????。 今天就和大家一起看看Android11到底改了些什么,以及最重要的,我们需要怎么适配?targetversion不改到30,是不是就不用适配了呢? 以下我分为两部分讲述,分别是 以Adnroid11 为目标版本的应用(targetSdkVersion&gt

积木点点滴滴 4361

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

你的App在Android 11上还能找到“朋友”吗?聊聊软件包可见性(Package Visibility)那些事儿

本文深入解析Android 11的软件包可见性(Package Visibility)机制,探讨其对应用间交互的影响及适配方案。从社交分享、支付SDK集成到内容提供者访问,详细介绍了如何在Android 11上优化应用功能,确保合规性并提升用户体验。

weixin_30945039的博客 317

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为手机上调微信分享(图片)没反应

华为手机微信分享图片没反应

qq_36162336的博客 1003

Android11适配

https://developer.android.google.cn/preview/privacy/storage 1.用户权限授权 ​ (1)应用请求位置信息、麦克风、摄像头时,系统会弹出“仅限这一次”选项,属于临时授权,下次使用会再次提示用户授权。 ​ (2)自动重置未使用应用权限,几个月不使用的应用,被授予的权限自动恢复为重新授权状态。 ​ 如果想避免自动被重置权限(如:同步数据、与智能设备通信、与配套设备匹配),可以引导用户Intent跳转到Settings.ACTION_APPLIC

no_loafer的博客 1729

Android11 最全适配实践指南

一、前言 没错!Android 11 (version 30,Android R)正式发布了!看到这个新闻我知道我不能再拖了,再不好好准备好迎接Android 11的到来,到时候迎接我的就是客户的指责,甚至老板的一封休书了????。今天就和大家一起看看Android 11到底改了些什么,以及最重要的,我们需要怎么适配?targetversion 不改到 30,是不是就不用适配了呢?以下我分为两部分讲述,分别是 以Android 11为目标版本的应用 (targetSdkVersion>=30才

残风乱了温柔的博客 2963
上一篇: Kotlin 与 Java 相互调用
下一篇: 【Fix Bug】针对 Google Photos 返回的图片Uri,裁剪照片失败
Lucky_William
博客等级 码龄11年 161粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值