gpt4 book ai didi

android - android 11 kotlin 中的包可见性

转载 作者:行者123 更新时间:2023-12-04 14:07:17 25 4
gpt4 key购买 nike

我想找到设备上安装的电子邮件客户端,并在该应用程序上重定向电子邮件 ID 以发送电子邮件。它在 android 10 下运行良好,但在 android 11 中无法运行。我找到了有关 Package visibility filtering on Android 11 的文章.我不明白如何在 android 11 中实现此代码功能

request?.url.toString().startsWith("mailto:") -> {
val intent = Intent(Intent.ACTION_SENDTO)
intent.type = "message/rfc822"
intent.data = Uri.parse(request?.url.toString())
view?.context?.packageManager?.let { packageManager ->
if (packageManager.resolveActivity(intent, 0) != null) {
view.context?.startActivity(intent)
} else {
Log.E("Error to find ", "Email client")
}
}
}
它在低于 时启动电子邮件客户端安卓 10 但无法在 中找到电子邮件客户端安卓 11 .它总是显示 查找电子邮件客户端时出错 .有人可以更详细地解释我如何 Android 11 上的包可见性过滤 正在工作,有人可以分享一些代码如何实现这一点。

最佳答案

由于您的应用面向 Android 11 或更高版本,并且需要与自动可见应用之外的应用交互,因此添加 查询 应用 list 文件中的元素。在元素中,按包名称、 Intent 签名或提供者权限指定其他应用程序。
要查看其他包,请声明您的应用需要使用该元素来增加包的可见性。

<manifest...>
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
<application>
</application>
</manifest>
如果您的应用可能需要查询设备上所有已安装的应用或与之交互(这种情况很少见),您可以选择 QUERY_ALL_PACKAGES Android 11 中引入的权限。
如果 resolveActivity() 返回 null 然后尝试 queryIntentActivities()
更多请引用: https://developer.android.com/training/package-visibility/declaring

关于android - android 11 kotlin 中的包可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67523038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com