我正在尝试获取与扩展名相关联的默认程序的图标。
这是我的代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String tt = mime.getMimeTypeFromExtension(getExtension());
intent.setDataAndType(Uri.fromFile(getFile()), tt);
List<ResolveInfo> matches = c.getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo match : matches) {
if(match.isDefault){
//GET ICON
}
}
问题是match.isDefault
总是返回false,即使我尝试将PackageManager的标志从0
设置为PackageManager.MATCH_DEFAULT_ONLY
。
很明显,我正在测试的文件(视频)默认与程序(MX播放器)相关联。
有人能帮助我吗?
提前致谢。
答案 0 :(得分:2)
作为替代解决方案,您可能希望使用此方法获取默认意图:
ResolveInfo info = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
返回的结果是:
如果没有针对intent的默认设置: info.activityInfo.name等于“com.android.internal.app.ResolverActivity”
如果为intent设置了任何默认应用程序,那么您可以在ResolveInfo对象上查看默认的应用信息。
修改强>
对于网址,您可以执行以下操作:
//Example: youtube url
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=something"));
ResolveInfo defaultResolution = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
//Print the activity name
Log.i(TAG, "defaultResolution:" + defaultResolution.activityInfo.name);