1. ホーム
  2. android

[解決済み] ブラウザからのリンクを遮断してAndroidアプリを開く

2022-11-07 20:01:58

質問

ユーザーが特定のパターンの URL をクリックしたときに、ブラウザでリンクを開くのではなく、アプリでリンクを開くように指示できるようにしたいと思います。 これは、ユーザーがブラウザーの Web ページにいるとき、電子メール クライアント、または新しく作成されたアプリの WebView 内にいるときに可能です。

たとえば、携帯電話のどこからでも YouTube のリンクをクリックすると、YouTube アプリを開く機会が与えられます。

自分のアプリでこれを実現するにはどうしたらよいでしょうか。

どのように解決するのですか?

カテゴリのandroid.intent.action.VIEWを使用する。 android.intent.category.BROWSABLEを使用する。 .

Romain Guyの フォトストリーム アプリの AndroidManifest.xml ,

    <activity
        android:name=".PhotostreamActivity"
        android:label="@string/application_name">

        <!-- ... -->            

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http"
                  android:host="flickr.com"
                  android:pathPrefix="/photos/" />
            <data android:scheme="http"
                  android:host="www.flickr.com"
                  android:pathPrefix="/photos/" />
        </intent-filter>
    </activity>

中に入ると、あなたは 活動 を表示し、アクションを探し、渡されたURLで何かをする必要があります。その Intent.getData() メソッドはUriを渡します。

    final Intent intent = getIntent();
    final String action = intent.getAction();

    if (Intent.ACTION_VIEW.equals(action)) {
        final List<String> segments = intent.getData().getPathSegments();
        if (segments.size() > 1) {
            mUsername = segments.get(1);
        }
    }

ただし、このアプリは少し古くなっている(1.2)ので、これを実現するもっと良い方法があるかもしれないことに注意してください。