我的应用程序需要检查电子邮件应用程序是否存在,以便我们可以隐藏用于发送电子邮件的按钮。
在 API 30 上,Android 对包管理器进行了更改,因此我们无法再访问活动,除非它们已在标签中声明<queries>。
我在 AndroidManifest 文件上设置了查询节点,如下所示
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.APP_EMAIL" />
</intent>
</queries>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用意图进行查询时,包管理器上的方法返回零项。
fun isEmailAppInstalled(context: Context): Boolean {
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_EMAIL)
return context.packageManager.queryIntentActivities(intent, 0).isNotEmpty()
}
Run Code Online (Sandbox Code Playgroud) android ×1