【问题标题】:Android launch an activity from a broadcast receiverAndroid 从广播接收器启动活动
【发布时间】:2012-06-07 12:42:00
【问题描述】:

我知道这可能不是最佳实践,但这是我想做的。

当我的广播接收器被调用时 - 启动一个不是全屏且具有透明背景的新活动 - 它会在您当前的活动/桌面壁纸之上打开。

我目前的代码如下:

我创建 + 调用一个新活动:


  Intent testActivityIntent = new Intent(context, com.andy.tabletsms.work.SMSPopup.class);
                testActivityIntent.putExtra("com.andy.tabletsms.message", main.msgs.get(i));
                testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                context.startActivity(testActivityIntent);

然后活动的主题是:

android:theme="@android:style/Theme.Translucent.NoTitleBar"

并且活动的代码只是具有简单布局的沼泽标准活动。但是,当该广播接收器启动活动时 - 它出现在应用程序启动时启动的上一个活动的顶部......根据此图像显示:

【问题讨论】:

    标签: android broadcastreceiver activity-stack taskaffinity


    【解决方案1】:

    这与我在上一个问题中回答的问题有关:Activity started from notification opened on top of the activity stack

    基本上都是关于:android:taskAffinityandroid:launchMode

    【讨论】:

      【解决方案2】:

      您已经问过同样的问题 3 次了,但我们仍然没有足够的信息。您一直在提到“原始活动”,但我们不知道那是什么,您是如何开始的,也不知道它去了哪里,以至于它“回来了”。

      你可能没有完成你的“主要”活动,或者你有奇怪的标志,或者它正在监听相同的意图。

      您也没有向我们展示有关您的广播接收器的任何信息。

      【讨论】:

      • 我提到问题可能是奇怪的标志。我的意思是清单中的启动标志。我不太清楚,但问题也不是,这是他可能期望的唯一答案。
      • 好吧,Qberticus 似乎提出了一些非常有意义的建议,并且可以很好地解决问题。最初的活动是我在制作 android 项目时创建的活动 - 目前它没有做太多,但将用于设置等。它没有接收器或任何东西。如果有更多要说的话,我会发布更多......
      【解决方案3】:

      不要使用 android:theme="@android:style/Theme.Translucent.NoTitleBar" 将 android:theme 保留为默认值。这对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多