我正在尝试检查所有已安装应用程序的功能,以处理我正在使用以下代码段的“ Intent.ACTION_SENDTO”。
Intent mailIntent = new Intent(Intent.ACTION_SENDTO);
infos = manager.queryIntentActivities(mailIntent, 0);
Log.i(TAG,"number of apps that can hadle ACTION_SENDTO "+infos.size());
if(infos.size()>0){
//do actions
}
对于Android N及以上版本,此代码段似乎可以提供正确的结果,但对于23级及以下的API级别,此代码段可为我提供emptyList。但是,有趣的部分甚至适用于API级别23及以下Intent的设备。ACTION_SENDTO由邮件应用程序处理,而当我运行以下代码段时,电子邮件应用程序就会失效
Intent i = new Intent(Intent.ACTION_SENDTO,Uri.parse(UIConstants.EMAIL_URI+mEmail));
startActivity(i);
任何人都可以帮助我理解为什么infos.size()
在我的API级别23及以下的第一段代码中将0重新调整为
答案 0 :(得分:0)
尝试检查您是否可以使用以下方法处理意图:
PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent);
} else {
Log.d(TAG, "No Intent available to handle action");
}
答案 1 :(得分:0)
设置数据应该可以解决问题。
mailIntent.setData(Uri.parse("mailto:"));