queryIntentActivities方法返回API级别23(棉花糖)及以下的空列表

时间:2018-08-13 17:45:59

标签: android android-intent intentfilter

我正在尝试检查所有已安装应用程序的功能,以处理我正在使用以下代码段的“ 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重新调整为

2 个答案:

答案 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:"));