ホーム » ブログ » ギャラクシーNote3などの機種で標準ブラウザ起動できないについて
このエントリーをはてなブックマークに追加
@2013/12/10

スポンサーリンク
自分が作成したアンドロイドアプリでデフォルトブラウザを起動する機能があります。Androidバージョン4.3以前のバージョンでブラウザをうまく起動したが、ギャラクシーnote3(SCL22)などの機種で異常が発生しました。
アプリからブラウザを起動するソースコードの抜粋:
    Intent i = new Intent();
    i.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));
    i.setAction(Intent.ACTION_VIEW);
    Uri uri = Uri.parse("http://web.matao.me/android");
    i.setDataAndType(uri, "text/html");
    act.startActivity(i);

エラー情報:
Unable to find explicit activity class {com.android.browser/com.android.browser.BrowserActivity}; have you declared this activity in your AndroidManifest.xml?
エラー情報からを見ると、BrowserActivityを認識できません。
いままでのandroidバージョンがこのようなエラーがなかったのに、ギャラクシーNOTE3は異常が発生!!
もちろん、サムソン製スマホはカスタマイズが多くて障害発生してでおかしくないと思う。多くの場合僕はこのような障害は対応しませんが、ここで解決方法を記録します。ほかの方は参考できれば嬉しいです。
先ず、Note3でブラウザ起動ためのパケージ名とクラス名を確認するコード:
    Intent browserIntent = new Intent(Intent.ACTION_VIEW);
    PackageManager packageManager = act.getPackageManager();
    Uri uri = Uri.parse("http://web.matao.me/android");
    browserIntent.setDataAndType(uri, "text/html");
    List<ResolveInfo> list = packageManager.queryIntentActivities(browserIntent, 0);
    for (ResolveInfo resolveInfo : list) {
     String pName = resolveInfo.activityInfo.packageName;    
        String actName = resolveInfo.activityInfo.name;
        System.out.println("パケージ名:"+pName + "  クラス名:"+actName);
    }
僕は確認した結果:


つまり、androidスマホでブラウザ起動するためのライブラリを変わった。通常の場合、com.android.browser.BrowserActivityを使ってブラウザ起動に対して、Note3は com.sec.android.app.sbrowser.SBrowserMainActivityを使ってデフォルトブラウザを起動する。
けっこう厄介な変更点ですね。
それを知ってたら、対策は簡単です。
i.setComponent(new ComponentName("com.sec.android.app.sbrowser", "com.sec.android.app.sbrowser.SBrowserMainActivity"));
を使ってブラウザを起動する。
このアンドロイドアプリ開発ブログは、あくまで僕の個人ブログに移行するから、詳しく説明はweb.matao.me/androidへ参考してください。

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
コメント@2013年12月11日
Gravatar-グローバルに認識されるアバター_zanmai.net
Xperia Z1 SO-01F機種で標準ブラウザはChromeなので、ブラウザ起動するコード:intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));     もしくは、ComponentName comp = ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main");

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check