当前位置:  开发笔记 > Android > 正文

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

如何解决《如何从URL链接(深层链接)重新打开(或恢复)以前启动的活动?》经验,为你挑选了1个好方法。

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

        
            
            
            
            

            

            
            
        

我们的用例是:

    用户打开应用程序,浏览一些餐馆

    用户点击餐厅(用餐馆菜单打开MenuActivity活动)

    用户单击菜单类别,例如Pizzas或Desserts或Soups,这将打开CategoryActivity.

    用户点击菜单添加到购物车我需要向用户发送带有网址的电子邮件.

我的问题:

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

在此输入图像描述

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

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

在此输入图像描述

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

Jeka.. 5

答案我发现工作

所以我创建了在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 android:launchMode="singleTop"在AndroidManifest中具有属性,因此只打开了1个实例:

    
    

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



1> Jeka..:
答案我发现工作

所以我创建了在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 android:launchMode="singleTop"在AndroidManifest中具有属性,因此只打开了1个实例:

    
    

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

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有