打开特定 URL 后将用户从浏览器重定向到我的应用程序

Redirect User From Browser to My App after open a specific URL

我编写了一个应用程序,用户在点击购买按钮 He/She 后重定向到互联网浏览器(例如:chrome)并在付款后我希望他回到我的应用程序(我的 activity) 所以我发现我应该使用 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:host="returnApp" android:scheme="myapp"></data>
</intent-filter>

当我像这样打开 url 时:

myapp://returnApp?status=1

我的应用打不开。

尝试像 myapp://returnApp/?status=1 那样打开它(添加尾部斜杠字符)。 发生这种情况是因为 path 参数定义为默认值 /.

遗憾的是,您无法精确匹配空字符串。如文档所述:

The path part of a URI which must begin with a /.

如果您确实需要使用 url myapp://returnApp?status=1 启动应用程序,您可以将 android:pathPattern=".*" 参数添加到您的数据子句中,例如

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

带有数据 android:pathPattern=".*" 的 Intent 过滤器将匹配任何路径,包括空路径。

  1. 打开 Firebase 应用程序
  2. 点击动态link
  3. 在 firebase 上创建您自己的重定向回调 link,例如 https://example.page.link/payment

  1. 在您的 manifest.xml 文件上设置 link,如以下代码

<intent-filter android:label="@string/app_name" android:autoVerify="true">
           <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="example.page.link" android:path="/payment"/>
                <data android:scheme="http"
                    android:host="example.page.link" android:path="/payment"/>
    </intent-filter>

  1. 运行 你的应用程序
  2. 在 android phone 浏览器
  3. 上检查 firebase link
  4. 工作正常