在Android 7.0之前,我能够检索已安装的浏览器类型应用程序列表及其包名称。然后,我升级到Android 7.0,我只能检索三星的互联网浏览器,但不能检索其他浏览器类型的应用程序,如Chrome。
设备三星标签A
这是代码:
public static List<String> getListOfBrowser(Context context) {
List<String> browserPackageName = new ArrayList<String>();
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
PackageManager pm = context.getPackageManager();
List<ResolveInfo> browserList = pm.queryIntentActivities(intent, 0);
for (ResolveInfo info : browserList) {
browserPackageName.add(info.activityInfo.packageName);
Log.e("BrowserList Info ",info.activityInfo.packageName+" total browser"+browserList.size());
}
} catch (Exception e) {
e.printStackTrace();
Log.e("BrowserList Info ",e.getMessage());
}
return browserPackageName;
}
答案 0 :(得分:2)
如果Android API级别&gt; = 23,那么您可以这样做:
List<ResolveInfo> browserList;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.MARSHMALLOW) {
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
} else {
browserList = pm.queryIntentActivities(intent, 0);
}
答案 1 :(得分:0)
代码看起来很好。但是,您应该使用PackageManager.MATCH_DEFAULT_ONLY标志 -
pm.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY)
而不是pm.queryIntentActivities(intent,0)