A可以使用以下代码获取所有已安装的Web浏览器:
ArrayList<String> allLaunchers = new ArrayList<String>();
Intent allApps = new Intent(Intent.ACTION_MAIN);
List<ResolveInfo> allAppList = getPackageManager().queryIntentActivities(allApps, 0);
for(int i =0;i<allAppList.size();i++) allLaunchers.add(allAppList.get(i).activityInfo.packageName);
Intent myApps = new Intent(Intent.ACTION_VIEW);
myApps.setData(Uri.parse("http://www.google.es"));
List<ResolveInfo> myAppList = getPackageManager().queryIntentActivities(myApps, 0);
for(int i =0;i<myAppList.size();i++){
if(allLaunchers.contains(myAppList.get(i).activityInfo.packageName)){
Log.e("match",myAppList.get(i).activityInfo.packageName+"");
}
}
link:Android Fetch installed and default browser in device
根据包名称,有没有办法为每个浏览器获取BOOKMARKS URI?
当我获得浏览器列表时,按包名称(通过上述方法),我需要获取其书签(浏览历史记录)数据库的链接,例如:
在Chrome上,软件包名称为com.android.chrome
,历史记录URI为content://com.android.chrome.browser/bookmarks
,但这种情况特殊,只有.browser
被添加到真实软件包名称...在大多数情况下它完全不同。就像在FF中,包名称是org.mozilla.firefox
,历史uri不同:content://org.mozilla.firefox.db.browser/bookmarks
(是的,我知道它不能在FF中读取),但只是一个例子。
所以基本上问题是:有没有办法,知道这个:org.mozilla.firefox
,得到这个:content://org.mozilla.firefox.db.browser/bookmarks
。