gpt4 book ai didi

android - 如何在 Android API 30 上查找设备上是否存在电子邮件应用程序?

转载 作者:行者123 更新时间:2023-12-05 00:18:22 25 4
gpt4 key购买 nike

我的应用程序需要检查是否存在电子邮件应用程序,以便我们可以隐藏发送电子邮件的按钮。
在 API 30 上,Android 对包管理器进行了更改,因此我们无法再访问 Activity ,除非它们已在 <queries> 中声明。标签。
我在 AndroidManifest 文件中设置了查询节点,如下所示

 <queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.APP_EMAIL" />
</intent>
</queries>
当我尝试使用 Intent 进行查询时,包管理器上的方法返回零项。
 fun isEmailAppInstalled(context: Context): Boolean {
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_EMAIL)
return context.packageManager.queryIntentActivities(intent, 0).isNotEmpty()
}

最佳答案

在您的 AndroidManifest添加:

<queries>
<intent>
<action android:name="android.intent.action.SENDTO"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="mailto"/>
</intent>
</queries>
并将您的代码更改为
val intent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
intent.addCategory(Intent.CATEGORY_DEFAULT)
return context.packageManager.queryIntentActivities(intent, 0).isNotEmpty()
语言语法可能需要双重检查/更新,因为我已经在 Xamarin.Forms 中测试了解决方案。并且也与 API 29 及以下版本兼容。

关于android - 如何在 Android API 30 上查找设备上是否存在电子邮件应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68258027/

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