web-dev-qa-db-ja.com

Android現在開いているタブでMozillaFirefoxアプリのリンクを開く

非常に具体的な要件があります。ブラウザで(WebViewではなく)URLリンクを開く必要があり、現在開いているタブで開く必要があります。つまり、開いているページは "redirect "(同じタブ内を意味します)。

複数のSO投稿(以下を参照)のコンセンサスに基づいて、これを行う方法は次のとおりです。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, packageName);
startActivity(intent);

具体的には、同じタブでリンクを開くようにブラウザに指示するのは Browser.EXTRA_APPLICATION_ID です。

enter image description here

理論的には、これはすべてのブラウザで機能するはずです。

ここで重要なのは、上記のpackageName[〜#〜]ブラウザ[〜#〜]のパッケージ名である必要があるということです。 )アプリのパッケージ名ではなく、開きたいもの(たとえば、com.Android.chromeまたはorg.mozilla.firefox)。

ドキュメントでは、独自のアプリのパッケージ名を使用するように求められていますが、独自のアプリのパッケージ名を使用している場合、現在開いているタブのリンクは開きません。 。両方Chrome&Firefoxは新しいタブでリンクを開きます。

したがって、これを機能させる秘訣は、packageNamecom.Android.chromeとして設定し、voilà、Chromeは、現在開いているタブでリンクを開きます。Yay!

同じトリックはFirefoxでは機能しません。

これを一般的に任意/すべてのブラウザで機能させるにはどうすればよいですか?

どうやらこれはFirefoxの既知の問題です:

[〜#〜] a [〜#〜]FirefoxはインテントからのフラグBrowser.EXTRA_APPLICATION_IDを処理しません

[〜#〜] b [〜#〜]Android Mozilla FireFoxが新しいタブでページを開かない

このバグは修正されましたか? Firefoxに同じタブでリンクを開かせる既知の方法はありますか?

これを任意の/すべてのブラウザで機能させるにはどうすればよいですか?

参照

1Androidリンクを強制的に開いてChromeで開く方法はありますか?

2複数のタブを避けてサービスからブラウザを開く

3Androidブラウザ、複数のタブを避けてください でURLを開きます。

4最後に開いたタブのURLをchrome で開きます。

5Android code(webviewを使用しない) を使用してブラウザの同じタブでURLを開きます。

6同じタブでブラウザを開くAndroidアプリ?

7Browser.EXTRA_APPLICATION_IDがICSで機能していません

8ブラウザで開いている複数のタブを停止する方法

9デフォルトで新しいタブにローカルページが読み込まれないようにする方法Androidブラウザ

10Browser.EXTRA_APPLICATION_ID を使用してタブキューを処理します。

11URIインテントの読み込みを許可します

5
Y.S

Firefoxの場合は、コンポーネントをインテントに設定して、以下の回避策を試してください。

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
 intent.setComponent(new ComponentName("org.mozilla.firefox","org.mozilla.firefox.App"));
 this.startActivity(intent);
2
PattySpringDev