gddhy

_(:з」∠)_ 加载中...
  • 主页
  • 归档
  • 工具
  • 关于
所有文章 友链

gddhy

_(:з」∠)_ 加载中...

  • 主页
  • 归档
  • 工具
  • 关于

Android 11 适配 软件包可见性

2023-02-19
字数统计:1.1k字 阅读时长≈5分

一、软件包可见性说明

如果应用以 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
// 检索可以为给定意图执行的所有 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
<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
<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
<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
<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
<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
<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
<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
<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
<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
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

附 Github 源码:

AndroidManifest.xml

转载自Lucky_William:https://blog.csdn.net/java_android_man/article/details/122133434

赏

谢谢你请我吃糖果

微信
  • Android

扫一扫,分享到微信

微信分享二维码
安卓安装调试应用
设置MIUI双开默认打开主应用
  1. 1. 一、软件包可见性说明
    1. 1.1. 1. 不受影响的特定场景
    2. 1.2. 2. 受影响的方法列表
  2. 2. 二、软件包可见性配置
    1. 2.1. 1. 检查是否有可用浏览器,例如需要打开外部浏览器
    2. 2.2. 2. 检查设备能否打开给定文件,如需要打开 pdf、zip
    3. 2.3. 3. 创建自定义共享表单,如分享图片、文件
    4. 2.4. 4. 显示自定义文字选择操作,如选中一段文字,进行复制、粘贴操作
    5. 2.5. 5. 连接到文字转语音引擎
      1. 2.5.1. 6. 连接到语音识别服务
    6. 2.6. 7. 显示联系人的自定义数据行
    7. 2.7. 8. 连接到媒体浏览器服务
    8. 2.8. 9. 配置访问 微信,支付宝,QQ,微博
    9. 2.9. 10. 配置查询所有应用及与之交互(以上均可不配置,但 gp 会严格审核)
  3. 3. 附 Github 源码:
留言已关闭
© gddhy
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链

tag:

  • 软件分享
  • Android
  • Hexo
  • game
  • Html
  • Java
  • mtk
  • MIUI
  • 旧机博物馆
  • git
  • Termux
  • 原神
  • Win
  • 安卓学习笔记

    缺失模块

  • Luminous' Home
  • 影子博客
  • 四次元领域
  • 初之音
  • Mr.Pumpkin
  • JUSEBLOG
  • ZhaoQuinn 's Blog