打开特定 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 过滤器将匹配任何路径,包括空路径。
- 打开 Firebase 应用程序
- 点击动态link
- 在 firebase 上创建您自己的重定向回调 link,例如 https://example.page.link/payment
- 在您的 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>
- 运行 你的应用程序
- 在 android phone 浏览器
上检查 firebase link
- 工作正常
我编写了一个应用程序,用户在点击购买按钮 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 过滤器将匹配任何路径,包括空路径。
- 打开 Firebase 应用程序
- 点击动态link
- 在 firebase 上创建您自己的重定向回调 link,例如 https://example.page.link/payment
- 在您的 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>
- 运行 你的应用程序
- 在 android phone 浏览器 上检查 firebase link
- 工作正常