[英]How to get the list of installed Browser Apps in an Android 7.0 running devices programmatically?
在 Android 7.0 之前,我能夠檢索已安裝的瀏覽器類型應用程序列表及其包名稱。 然后,我升級到 Android 7.0,我只能檢索三星的 Internet 瀏覽器,而不能檢索其他瀏覽器類型的應用程序,例如 Chrome 。
設備三星 Tab 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;
}
如果 Android API 級別 >= 23,那么您可以這樣做:
List<ResolveInfo> browserList;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.MARSHMALLOW) {
// gets all
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
// only the defaults
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
} else {
browserList = pm.queryIntentActivities(intent, 0);
}
代碼看起來不錯。 但是你應該使用PackageManager.MATCH_DEFAULT_ONLY
標志 -
pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
而不是
pm.queryIntentActivities(intent, 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.