【问题标题】:How to change main activity in Android programmatically如何以编程方式更改 Android 中的主要活动
【发布时间】:2012-02-16 07:27:39
【问题描述】:

是否可以在 Android 中为应用程序创建两个入口点,我的意思是我可以通过编程方式切换主活动吗?

【问题讨论】:

  • 这与有一个入口点决定做两种可能的事情之一有什么不同?

标签: android android-intent intentfilter


【解决方案1】:

每个导出的活动都是您应用的潜在入口点;一个外国应用程序可以有意图地启动它们中的任何一个。 (意图过滤器带有一个隐式的 android:export。)但是,您只能有一个启动器将尊重的入口点。要模拟第二个发射点,要么

  1. 提供一个完全独立的应用程序,用于启动您导出的活动之一,或

  2. 为您的“启动”活动提供唯一目的,即根据某种逻辑(保存的偏好、月相计算等)立即开始一项或另一项活动。

【讨论】:

    【解决方案2】:

    检查下面这个

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.setComponent(new ComponentName(packageName,mainActivity));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    ctx.startActivity(intent);
    

    【讨论】:

      【解决方案3】:

      我认为您正在谈论基于某些事件的启动活动决策,那么您需要添加一个广播接收器,例如如果您想启动 Activity1,请单击启动器上的应用程序图标。然后将意图过滤器添加到此活动 Action_MAIN 和 ACTION_LAUNCHER,如果您想在手机启动时启动 Activity2,则将过滤器添加到此活动,BOOT_COMPLETED。

      【讨论】:

        【解决方案4】:

        如果您正在谈论从您的应用启动其他应用,那么这可以是代码:

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setComponent(new ComponentName(packageName,mainActivity));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ctx.startActivity(intent);
        

        【讨论】:

          猜你喜欢
          • 2013-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-27
          • 1970-01-01
          • 2019-08-17
          相关资源
          最近更新 更多