android– 如何从url链接(深层链接)重新打开(或恢复)以前启动的活动?

android– 如何从url链接(深层链接)重新打开(或恢复)以前启动的活动?,第1张

概述我正在使用深层链接打开我的应用程序这是意图过滤器:<intent-filter><dataandroid:scheme="http"/><dataandroid:scheme="https"/><dataandroid:host="myapp.delivery"/>

我正在使用深层链接打开我的应用程序这是意图过滤器:

        <intent-filter>            <data androID:scheme="http" />            <data androID:scheme="https" />            <data androID:host="myapp.delivery" />            <data androID:pathPattern="/.*" />            <action androID:name="androID.intent.action.VIEW" />            <category androID:name="androID.intent.category.DEFAulT" />            <category androID:name="androID.intent.category.broWSABLE" />        </intent-filter>

我们的用例是:

>用户打开应用程序,浏览一些餐馆
>用户点击餐厅(用餐馆菜单打开MenuActivity活动)
>用户单击菜单类别,例如Pizzas或Desserts或Soups,这将打开categoryActivity.
>用户点击菜单添加到购物车我需要向用户发送带有网址的电子邮件.

我的问题:

(在步骤4之后)用户点击电子邮件应用程序(例如gmail或收件箱应用程序)上的URL,提示用户打开我的应用程序或浏览器,如下所示:

当用户点击打开我的应用程序时,会发生GotEmailActivity在gmail应用程序之上打开,我需要它在我之前打开的应用程序实例之上打开.

正如你在这里看到的那样,我的应用程序的2个实例是打开的(应用程序的第一个实例,第二个实例在gmail之上打开),:

如何在我以前推出的应用程序中打开点击链接,而不是在gmail / inBox应用程序之上?

解决方法:

答案我发现工作

所以我创建了在gmail / inBox应用程序之上启动的EntryActivity:

public class EntryActivity extends Activity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.entry_activity);        Uri uriParams = getIntent().getData();        Log.e("EntryActivity", uriParams.getHost() );        Log.e("EntryActivity", uriParams.getqueryParameter("uID") + " " + uriParams.getqueryParameter("type") + " " + uriParams.getqueryParameter("token") );        Intent startcategory = new Intent(this, GotEmailActivity.class);        startcategory.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        startActivity(startcategory);        this.finish();    }}

现在发生的事情是,EntryActivity在Gmail应用程序的顶部打开但它关闭了inmediatle但首先启动已经打开的GotEmailActivity,因此属性launchMode Singletop会阻止此类活动的新实例.

然后当我在GotEmailActivity打开我的应用程序时,我向用户发送电子邮件,其中包含打开应用程序的链接,而GotEmailActivity在AndroIDManifest中具有属性androID:launchMode =“singletop”,因此只打开了1个实例:

    <!--         important: notice androID:launchMode="singletop"        which seeks if an instance of this activity is already opened and        resumes already opened instance, if not it opens new instance.     -->    <activity        androID:name=".presenters.register.email.GotEmailActivity"        androID:label="@string/Title_activity_got_email"        androID:launchMode="singletop"         androID:theme="@androID:style/theme.Translucent.NoTitlebar" >

答案的优点是:https://stackoverflow.com/a/34499615/5297353

总结

以上是内存溢出为你收集整理的android – 如何从url链接(深层链接)重新打开(或恢复)以前启动的活动?全部内容,希望文章能够帮你解决android – 如何从url链接(深层链接)重新打开(或恢复)以前启动的活动?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108226.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存