我已经安装了android手机与多个浏览器,我可能会或可能不会设置浏览器为默认值。
所以,我的问题是..
- 从我的应用程序,如何强制只在原生的Android浏览器中打开一个链接?
- 有没有一种方法可以让我知道,如果有一个浏览器设置为默认或没有?
我已经安装了android手机与多个浏览器,我可能会或可能不会设置浏览器为默认值。
所以,我的问题是..
从我的应用程序,如何强制只在原生的Android浏览器中打开一个链接?
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
Uri uri = Uri.parse(url);
intent.setData(uri);
try
{
startActivity(intent);
}
catch (Exception e)
{
e.printStackTrace();
}
有没有一种方法可以让我知道,如果有一个浏览器设置为默认或没有?
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("URL"));
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0);
if (list.size() > 0) {
for (ResolveInfo resolveInfo : list) {
resolveInfo.isDefault();// will let u know if the app is set to default
}
} else {
//No apps available
}
你必须做以下调用本机浏览器
intent.setComponent(new
componentName("com.android.browser","com.android.browser.BrowserActivity"));
尝试这样的事情。
try {
Intent i = new Intent();
ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity");
i.setComponent(comp);
i.setAction("android.intent.action.VIEW");
i.addCategory("android.intent.category.BROWSABLE");
ContentURI uri = new ContentURI(url);
i.setData(uri);
startActivityForResult(i, 2);
} catch (URISyntaxException e) {
e.printStackTrace();
}
关于第二个问题,你可以使用PackageManager
。
得到的实例PackageManager
PackageManager packageManager = getPackageManager();
和查询它的具体行动,数据和类别Intent
。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("URL"));
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : list) {
if(resolveInfo.isDefault())
{
//default browser
}
}
终于找到它了。 resolveActivity工作与PackageManager例如MATCH_DEFAULT_ONLY标志..
而包名是由厂商而不同,可能会出现ActivityNotFoundException。 请参考这个答案,希望这将有助于。
https://stackoverflow.com/a/14723703/1083128