9

Android アプリでオーバーライドしている URL があります。電子メールからそのリンクへのリンクをクリックすると、ダイアログがポップアップ表示されますIntent Chooser("Complete this using")。ただし、Chrome (Android 4) 内から同じリンク (<a>タグ内) をクリックすると、その URL にリダイレクトされ、Intent Chooser.

<a>タグ内のリンクを Google Play ストアへのリンク ( )に置き換えると、リンクをhttps://play.google.comクリックすると再びポップアップが表示さIntent Chooserれます。

Google Play ストアと Chrome に何か特別なことがありますか、それとも URL の設定に何か問題がありますか? これを機能させるためにhtmlでできることはありますか?

これが<intent-filter>

<activity
    android:label="@string/app_name"
    android:name="..."
    >
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <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="https"
              android:host="www.example.com"
            />
        <data android:scheme="http"
              android:host="www.example.com"
            />
    </intent-filter>
</activity>

(URLにリダイレクトしてもダイアログはポップアップしませんIntent Chooserが、上記の状況が私の問題をより明確に表していると思いました。)

また、私のドメインがダウンしている間、これはすべて機能していたと確信しています。ドメインがオンラインになるとすぐに、これは機能しなくなりました。当時、私はこの問題に 100% 集中していなかったので、これは私の想像の産物かもしれません。

Chrome が Google Play ストアの URL を特別に扱う可能性はありIntent Chooserますか?

4

3 に答える 3

2

私はこれをかなりいじりましたが、機能する方法を示す方が簡単かもしれません. これは 2.3.4 のデバイスと 4.2.2 のデバイスで動作するので、ほとんどのデバイスで動作すると思います。

マニフェスト ファイルからのインテント フィルターは次のとおりです。

<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="realsimpleapps.com" android:pathPrefix="/acv/" />
</intent-filter>

これが私のhtmlファイルです:

<a href="http://realsimpleapps.com/acv/aThing">Click Me!</a>

そして、私の Main アクティビティでは、これを使用して、「aThing」(上記) に設定されているものをすべて取得します。

Uri data = getIntent().getData();
if (data != null) {
    List<String> params = data.getPathSegments();
    if (params != null) {
        Log.d(tag, "Param 0: " + params.get(0));
    }
}

それを機能させてから、2 番目のデータ要素をインテント フィルターに追加します。その後も機能する場合は、設定する必要があります。

それがどうなるか教えてください。

デシベル

于 2013-03-26T20:36:28.480 に答える
1

実際の/既知のバグである可能性が非常に高いです。

私が提案したもの(ただし、現在は閉じられているため、試しているバージョンで修正されるようです): https://code.google.com/p/chromium/issues/detail?id=113140

@xbakesk によって発見/公開: https://code.google.com/p/chromium/issues/detail?id=170925 https://code.google.com/p/chromium/issues/detail?id=230104

他のバグが見つかった場合は、コメントでお知らせください。回答を直接追加または編集します。バグがクローズされた場合は、回答も更新しようとします。

于 2013-04-11T19:03:58.097 に答える
0

インテント フィルタに複数のデータ要素を追加できるかどうかはわかりません。異なるスキームに対して 2 つの異なるインテント フィルタを使用します。

Web ページ上の URL を制御できる場合は、http を独自のカスタム プロトコルに変更して、Web ブラウザーでプロンプトを表示する代わりにアプリを開くことができます。

于 2013-03-26T15:54:42.647 に答える