Android queryIntentActivities始终返回空列表

Iva*_*van 7 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);
        }
Run Code Online (Sandbox Code Playgroud)

任何的想法?

mat*_*ash 13

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

mainIntent.setType("text/plain");
Run Code Online (Sandbox Code Playgroud)

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