问题描述
我正在尝试创建一个 .aar 文件以供其他应用程序使用。在该模块中,用户因支付需要退出应用程序。我想在付款完成并点击网站上的按钮后打开应用程序。如果它在我的应用程序中,我可以通过在清单中添加一个用于深层链接的 intent-filter
轻松处理它。但是现在我不知道如何读取清单并读取应用程序上定义的深层链接。
我搜索了它,但找不到任何答案。
提前致谢。
解决方法
您可以将 Activity
添加到您的 Android 模块(库)并在清单中为您的 intent-filter
定义相同的 Activity
。
因此,当浏览器完成支付流程后,他们可以使用深层链接启动您图书馆的Activity
。
我强烈建议您也阅读Android App Links。
这样您就可以在您的 .aar
中正确处理所有事情,并且最终应用程序开发人员不必为您扮演中继角色。
这种方法有一个重要的问题,那就是当多个应用程序将您的 .aar
集成到同一设备上时要小心。
在这种情况下,支付流程结束后,Android 会向用户推荐这两个应用,这是错误的,可能会导致意外结果。
通过在为您的 Activity 定义的意图过滤器中使用 $applicationId
键,有一个简单的修复方法。
只需确保您的浏览器在完成后使用正确的 applicationId
调用正确的回调 URL。
以下是该活动清单的完整示例:
<activity
android:name=".CallBackActivity"
android:label="@string/app_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="https" />
<data android:host="www.yourDomainName.com" />
<data android:pathPattern="payment/$applicationId" />
</intent-filter>
</activity>