我试图获取所有能够发送短信的应用程序列表。
我找到了几个建议使用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);
}
有什么想法吗?
答案 0 :(得分:13)
您尚未设置Intent的MIME类型。例如:
mainIntent.setType("text/plain");
这将产生结果。但是,请注意,这不会完全返回“能够发送文本消息的应用程序”,而是那些可以接受文本的应用程序,而不一定是为了发送消息(例如, Google Translate app能够接收文本。)