Android深层链接 - 后台堆栈

 冷向泽 发布于 2023-01-08 18:59

我正在尝试在我的Android应用程序中实现深层链接.我一直在关注这个指南.我在Android清单中启动了Android活动并进行了intent-filter:


    
        
        
        
        
    
    

我从adb产生这个意图:

adb shell am start -W -a android.intent.action.VIEW -d "com.example://test" com.example

正在使用正确的意图数据创建活动,并按预期运行.但是,按下后退按钮后,应用程序退出.MainActivity正如parentActivityNameAndroid清单中所指出的那样,我期待构建后备栈.显然事实并非如此.

在这种情况下,如何将父活动添加到后台堆栈?

我想,如果我可以使用一个TaskStackBuilder如图所示这里在通知的情况下,但不知道它是如何工作的.

也许我应该有一个中间Activity来构建主要活动,例如:

TaskStackBuilder.create(this)
                .addParentStack(MyActivity.class)
                .addNextIntent(new Intent(this, MyActivity.class))
                .startActivities();

2 个回答
  • 我遇到了完全相同的问题.因此,如果您希望用户转到父活动,只要他们按下UP按钮,您就可以在其中定义父活动AndroidManifest.xml,然后以编程方式控制向上导航.

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
    @Override
    public void onBackPressed() {
        NavUtils.navigateUpFromSameTask(this);
    }
    

    您可以在所有活动中执行相同操作,以不断地将用户导航回主屏幕.此外,您可以在导航用户之前创建完整的后台堆栈.请阅读以下文档中的更多内容.

    提供导航

    直接的解决方案

    您只需检查深层链接活动是否有后台堆栈,即可通过调用返回应用程序的任务本身isTaskRoot().我不太确定它是否确实有任何警告.

    @Override
    public void onBackPressed() {
        if(isTaskRoot()) {
            Intent parentIntent = new Intent(this, ParentActivity.class);
            startActivity(parentIntent);
            finish();
        } else {
            super.onBackPressed();
        }
    }
    

    在这种情况下,您实际上不必在Android Manifest中声明父活动.

    2023-01-08 19:01 回答
  • 你试过这样做吗

    Intent intent = new Intent(this, MyActivity.class);
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntentWithParentStack(intent);
    stackBuilder.startActivities();
    

    在深层链接的情况下,您必须构建自己的App堆栈.

    2023-01-08 19:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有