Android queryIntentActivities始终返回空列表

时间:2014-06-30 21:24:39

标签: java android

我试图获取所有能够发送短信的应用程序列表。

我找到了几个建议使用PackageManager的解决方案。

我认为要使用的Intent是ACTION_SEND,但是当我运行我的代码时,我总是收到一个空列表。

这是我的代码:

        Intent mainIntent = new Intent(Intent.ACTION_SEND, null);
        List<ResolveInfo> pkgAppsList = getApplicationContext().getPackageManager().queryIntentActivities( mainIntent, PackageManager.GET_RESOLVED_FILTER);
        int size = pkgAppsList.size();
        int i = 0;
        Log.i(TAG, "Size: " + size);
        for(ResolveInfo infos : pkgAppsList){
            String name = infos.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
            Log.i(TAG, "name: " + name);
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:13)

您尚未设置Intent的MIME类型。例如:

mainIntent.setType("text/plain");

这将产生结果。但是,请注意,这不会完全返回“能够发送文本消息的应用程序”,而是那些可以接受文本的应用程序,而不一定是为了发送消息(例如, Google Translate app能够接收文本。)