【问题标题】:Transparent Activity opening independently透明Activity独立开启
【发布时间】:2016-08-20 14:23:12
【问题描述】:

我想创建一个具有透明背景的活动,我可以通过单击通知来启动它。

我毫无问题地创建了通知和活动,但现在,我想独立打开这个特定的 TransparentActivity,即不在后台显示其他活动。

我试图在意图上加上一些标志:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

在 AndroidManifest 文件中,在我的 TransparentActivity 标签上,我放了:

<activity
    android:name=".TransparentActivity"
    android:launchMode="singleTask"
    android:theme="@style/Theme.Transparent">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

它按预期工作,但现在我的应用有两个图标,这是我不想要的。

有没有办法让它工作?

【问题讨论】:

  • 地址:Intent.FLAG_ACTIVITY_CLEAR_TASK
  • 它没有用。除了添加这个新标志之外,我还应该做其他事情吗?
  • 为了了解你的情况,你能贴出两个图标的截图吗?
  • 我现在没有屏幕截图(我可以稍后发送),但在安装应用程序时,Android 会使用意图过滤器“LAUNCHER”为每个活动创建一个图标。
  • 您应该为您的TransparentActivity 删除&lt;intent-filter&gt;。你不需要那个。 Android 为每个 &lt;intent-filter&gt;Activity 创建一个应用程序图标,其中 ACTION=MAIN 和 CATEGORY=LAUNCHER。

标签: android android-intent android-activity android-pendingintent start-activity


【解决方案1】:

最简单的方法是在清单中为 Activity 更改 taskAffinity。添加:

android:taskAffinity=""

&lt;activity&gt; declaration for this oneActivity`。

然后这个Activity 将启动到一个新任务中,而不是启动到运行应用程序其余部分的任务中。

【讨论】:

  • 我使用的是任务关联性,但使用的是“singleTask”而不是“singleInstance”。我阅读了任务和回栈文档,我确信“singleTask”就是我要找的那个。使用“singleInstance”对我有用,谢谢:D
  • 我不知道您为什么编辑我的答案并将“singleInstance”一词添加到taskAffinity 声明中。这与 launchMode 无关,并且该编辑肯定会混淆问题。您将taskAffiinity 设置为空字符串,这意味着Activity 与任何其他活动没有关联,因此它可以在任何任务中运行。实际上,您使用的字符串没有区别,但是使用字符串“singleInstance”肯定会让人感到困惑。我重新编辑了我的答案。
  • 看你的原帖,你用的不是taskAffinity,是launchMode="singleTask"
  • 很抱歉编辑您的问题。我把launchModetaskAffinity 混淆了,我很高兴你把它改回来了:) 再一次,非常非常感谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 2020-09-10
  • 2017-03-29
相关资源
最近更新 更多