【发布时间】:2011-11-25 18:25:28
【问题描述】:
我正在尝试查找默认的 Intent 哪个设备正在使用以支持特定的 mime 类型,代码如下:
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, mimeType);
List<ResolveInfo> lri = pm.queryIntentActivities(intent, 0);
for(ResolveInfo resolveInfo:lri)
{
if(Me.DEBUG)
Log.i(TAG, "Resolved intent="+resolveInfo.activityInfo.packageName+
", default="+resolveInfo.isDefault+
", order="+resolveInfo.preferredOrder+
", match="+resolveInfo.match+
", priority="+resolveInfo.priority);
if(resolveInfo.isDefault)
{
intent=pm.getLaunchIntentForPackage(resolveInfo.resolvePackageName);
intent.setDataAndType(uri, mimeTypes.getMimeTypeString(name));
break;
}
}
return intent;
这段代码有什么问题? ResolveInfo 永远不会返回默认值... Logcat 报告始终相同,例如:
解决intent=com.android.htmlviewer, default=false, order=0, 匹配=6324224,优先级=0 已解决意图=com.sec.print.mobileprint, default=false,order=0,match=6324224,priority=0 已解决 意图=com.qo.android.htc,默认=false,订单=0,匹配=6324224, 优先级=0 已解决意图=org.coolreader,默认=false,顺序=0, 匹配=6324224,优先级=0 已解决意图=xcxin.fileexpert, default=false,order=0,match=6324224,priority=0 已解决 意图=com.opera.browser,默认=false,顺序=0,匹配=6324224, 优先级=0 已解决意图=com.dropbox.android,默认=false, 顺序=0,匹配=6324224,优先级=0
虽然选择器上有默认标记为“将其设为默认”复选框!
【问题讨论】:
标签: android android-intent default mime-types