我的应用需要检查是否存在邮件应用,以便我们可以隐藏发送电子邮件的按钮。
在API 30上,Android对包管理器进行了更改,因此我们无法访问活动,除非它们已在<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()
}