我正在寻找一种在Android上打开默认电子邮件应用程序的方法,但不使用它来发送消息。我知道我可以使用mailto://
或Intent参数来做到这一点,但这会自动打开新的消息屏幕。我想存档的只是打开应用程序本身。
到目前为止,我已经尝试过
override fun startEmailApplication() {
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_EMAIL)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}
但是每次我得到
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.APP_EMAIL] flg=0x10000000 }
通过电子邮件应用程序(AquaMail,Outlook)进行了安装。
答案 0 :(得分:0)
我会组合一些东西。
检测给定Intent的响应包:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(intent, 0);
boolean canResolve = resolveInfos.size() > 0;
这将列出可用的软件包以响应此Intent。使用queryIntentActivities()
可让我检索ResolveInfo
,该公开了有关该应用程序的更多信息。
选择第一个,并使用其packageName打开它:
if (resolveInfos.size() > 0) {
startActivity(getPackageManager().getLaunchIntentForPackage(resolveInfos.get(0).resolvePackageName))
}
您也将没有ActivityNotFoundException
,因为我们会事先检查某些东西会响应我们的Intent
。随时在else
中处理失败的案件。
答案 1 :(得分:-1)
您可以执行以下操作:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
getActivity().startActivity(intent);