複数のブラウザーがインストールされた Android フォンを使用していますが、ブラウザーをデフォルトに設定する場合としない場合があります。
だから、私の質問は..
- 私のアプリから、 NATIVE Android ブラウザーでのみリンクを強制的に開くにはどうすればよいですか?
- ブラウザがデフォルトに設定されているかどうかを知る方法はありますか?
複数のブラウザーがインストールされた Android フォンを使用していますが、ブラウザーをデフォルトに設定する場合としない場合があります。
だから、私の質問は..
私のアプリから、NATIVE 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();
}
2番目の質問には、を使用できます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
}
}
パッケージ名が製造元によって異なる場合、ActivityNotFoundExceptionが発生する可能性があります。この回答を参照してください。お役に立てば幸いです。