Android 11 适配 软件包可见性

Android 11 软件包可见性 适配

目录

  • Android 11 软件包可见性 适配
    • 一、软件包可见性说明
      • 1. 不受影响的特定场景
      • 2. 受影响的方法列表
    • 二、软件包可见性配置
      • 1. 检查是否有可用浏览器,例如需要打开外部浏览器
      • 2. 检查设备能否打开给定文件,如需要打开 pdf、zip
      • 3. 创建自定义共享表单,如分享图片、文件
      • 4. 显示自定义文字选择操作,如选中一段文字,进行复制、粘贴操作
      • 5. 连接到文字转语音引擎
      • 6. 连接到语音识别服务
      • 7. 显示联系人的自定义数据行
      • 8. 连接到媒体浏览器服务
      • 9. 配置访问 微信,支付宝,QQ,微博
      • 10. 配置查询所有应用及与之交互(以上均可不配置,但 gp 会严格审核)
    • 附 Github 源码:

一、软件包可见性说明

如果应用以 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. 受影响的方法列表

// 检索可以为给定意图执行的所有 activityPackageManager.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><intent><action android:name="android.accounts.AccountAuthenticator" />intent><intent><action android:name="android.intent.action.VIEW" /><dataandroid: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" /><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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部