8

複数のブラウザーがインストールされた Android フォンを使用していますが、ブラウザーをデフォルトに設定する場合としない場合があります。

だから、私の質問は..

  1. 私のアプリから、 NATIVE Android ブラウザーでのみリンクを強制的に開くにはどうすればよいですか?
  2. ブラウザがデフォルトに設定されているかどうかを知る方法はありますか?
4

6 に答える 6

7

私のアプリから、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
}
于 2012-04-26T12:54:59.113 に答える
5

ネイティブブラウザを呼び出すには、次のようにする必要があります

  intent.setComponent(new    
  componentName("com.android.browser","com.android.browser.BrowserActivity"));
于 2012-10-22T05:26:44.920 に答える
1

このようなことを試してください。

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
         }
    }
于 2012-04-26T12:15:44.470 に答える
1

パッケージ名が製造元によって異なる場合、ActivityNotFoundExceptionが発生する可能性があります。この回答を参照してください。お役に立てば幸いです。

https://stackoverflow.com/a/14723703/1083128

于 2013-02-06T07:30:10.610 に答える