複数のブラウザがインストールされたアンドロイド携帯電話があり、ブラウザをデフォルトに設定する場合と設定しない場合があります。アンドロイドアプリからネイティブブラウザを開く
だから、私の質問は...私のアプリから
- 、私は唯一のNATIVEアンドロイドブラウザでリンクを開く強制するにはどうすればよいですか?
- デフォルトに設定されているブラウザがあるかどうかを知る方法はありますか?
複数のブラウザがインストールされたアンドロイド携帯電話があり、ブラウザをデフォルトに設定する場合と設定しない場合があります。アンドロイドアプリからネイティブブラウザを開く
だから、私の質問は...私のアプリから
私のアプリから、どのように私はNATIVEアンドロイド ブラウザでリンクを開く強制できますか?
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
}
このようなものを試してください。
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
}
}
たくさんN-JOY @おかげ 次のコードでは、最初の質問に答えました。 'インテントii =新しいインテント(); コンポーネント名comp =新しいComponentName( "com.android.browser"、 "com.android.browser.BrowserActivity"); ii.setComponent(comp); ii.setAction( "android.intent.action.VIEW"); ii.addCategory( "android.intent.category.BROWSABLE"); ii.setData(Uri.parse( "http://www.google.com")); startActivity(ii); ' 質問の2番目の部分について**携帯電話にデフォルトのブラウザが設定されているかどうかを知る方法はありますか?** – defactodeity
私はあなたの2番目の質問を更新しました。 –
ブラウザをデフォルトに設定しましたが、 'resolveInfo.isDefault'は動作していないようです。 – defactodeity
最後にわかりました。 resolveActivityがPackageManagerインスタンス上MATCH_DEFAULT_ONLYフラグで動作します。..
あなたは、パッケージ名はメーカーによって異なるが、それはActivityNotFoundExceptionを発生する可能性がある
intent.setComponent(new
componentName("com.android.browser","com.android.browser.BrowserActivity"));
ネイティブブラウザを呼び出すための以下を行う必要があります。 この回答を参考にしてください。
素晴らしい!これは機能します。ありがとうPrabhu :) – defactodeity
上記のコードは、デフォルトのブラウザを識別できませんでした。私のデバイスではOperaをデフォルトのブラウザに設定しましたが、このコードを実行すると、 'resolveInfo.isDefault'はどのブラウザでも真実ではありません!助けてください。 – defactodeity