我是靠谱客的博主 美满玫瑰,这篇文章主要介绍Android 11 适配 软件包可见性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. 受影响的方法列表

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 检索可以为给定意图执行的所有 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. 检查是否有可用浏览器,例如需要打开外部浏览器

复制代码
1
2
3
4
5
6
7
8
9
10
<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

复制代码
1
2
3
4
5
6
7
8
9
<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. 创建自定义共享表单,如分享图片、文件

复制代码
1
2
3
4
5
6
7
8
9
<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. 显示自定义文字选择操作,如选中一段文字,进行复制、粘贴操作

复制代码
1
2
3
4
5
6
7
8
9
<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. 连接到文字转语音引擎

复制代码
1
2
3
4
5
6
7
8
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <queries> <intent> <action android:name="android.intent.action.TTS_SERVICE" /> </intent> </queries> </manifest>

6. 连接到语音识别服务

复制代码
1
2
3
4
5
6
7
8
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <queries> <intent> <action android:name="android.speech.RecognitionService" /> </intent> </queries> </manifest>

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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. 连接到媒体浏览器服务

复制代码
1
2
3
4
5
6
7
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,微博

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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 会严格审核)

复制代码
1
2
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

附 Github 源码:

AndroidManifest.xml

最后

以上就是美满玫瑰最近收集整理的关于Android 11 适配 软件包可见性Android 11 软件包可见性 适配的全部内容,更多相关Android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部