如何从网页中的链接返回到已启动浏览器的已暂停活动?

时间:2019-07-25 13:34:51

标签: android uri lifecycle intentfilter

我正在开发一个在线商店应用程序。我想使用浏览器将用户定向到付款页面。当用户向价格服务器付款时,将用户直接引导到另一个网页。在该网页中,点击链接并返回到应用,该链接也会显示付款结果。

当用户要付款时,我会使用这样的意图将用户定向到Web浏览器:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("payment-link"));
startActivity(intent);

然后我使用"<a href="">"标签返回到使浏览器吃饱的活动,如下所示:

在html中:

<a href="intent:#Intent;action=my-package-name;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;S.status=ok;end">Go back to App</a>

在清单中

<activity android:name=".activities.TestActivity">
    <intent-filter>
        <action android:name="my-package-name" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

但是结果不是我想要的。我想恢复活动,而不是在浏览器堆栈上创建一个。我还使用了android:launchMode="singleInstance",但是onBackPressed直接用于活动,我知道这是预期的结果。

我想要这个: enter image description here

是否有恢复活动的任何方式或实现此方案的任何其他建议?谢谢

1 个答案:

答案 0 :(得分:0)

我解决了。浏览器应使用Intent.FLAG_ACTIVITY_NO_HISTORY启动,“ MyActivity”应为singleTask。

在清单中

<activity
    android:name=".activities.OrderDetailsActivity"
    android:screenOrientation="portrait"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="ir.bornait.isan" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

用于启动浏览器:

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("payment-link"));
    intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    startActivity(intent);