web-dev-qa-db-ja.com

特定のURLを開いた後にユーザーをブラウザーから私のアプリにリダイレクトする

私は購入ボタンをクリックした後にユーザーがインターネットブラウザー(例:クロム)にリダイレクトするアプリケーションを作成し、支払い後に彼が私のアプリ(私のアクティビティ)に戻って欲しいので、インテントフィルターを使用する必要があることを知りましたが、私にはうまくいきません!

私はこれらのコードをマニフェストに追加します:

<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:Host="returnApp" Android:scheme="myapp"></data>
</intent-filter>

そして私がこのようなURLを開くと:

myapp:// returnApp?status = 1

アプリが開かない。

13
esmaeil

myapp://returnApp/?status=1のように開こうとします(末尾にスラッシュ文字を追加します)。 path パラメータが/のデフォルト値で定義されているため、これが発生します。

残念ながら、空の文字列を正確に照合することはできません。ドキュメントの状態として:

/で始まる必要があるURIのパス部分。

本当にmyapp://returnApp?status=1というURLでアプリを起動する必要がある場合は、次のようにAndroid:pathPattern=".*"パラメータをデータ句に追加できます。

<intent-filter>
    ...
    <data Android:Host="returnApp" Android:scheme="myapp" Android:pathPattern=".*"></data>
</intent-filter>

データAndroid:pathPattern=".*"のインテントフィルターは、空のパスを含むすべてのパスに一致します。

14
pepyakin