改变getRecentTasks的结果

时间:2011-06-06 23:03:12

标签: android android-homebutton

我有一个专为平板电脑设计的应用程序,在工作场所设置中,许多人将使用相机作为日常工作的一部分。虽然主管离开应用程序是合适和必要的,但其他人偶然难以这样做。但是,长按主页键很容易意外。我自己做了。这列出了最近的任务清单;用户可以点击其中任何一个而丢失,因为其中一些并不像普通智能手机用户那样复杂。

以编程方式,您可以通过getRecentTasks检索此列表。我的问题是如何从该列表中删除除最近的任务(我的)以外的所有任务,将长度减少到只有一个元素,或者将列出的任务更改为指向我的应用程序。我知道这是可能的:Toddler Lock做到了。

我的第一次尝试是修改返回的意图,希望它们通过引用传递。没有这样的运气。还有其他想法吗?

(我不是在谈论短按主页键。我已经找到了一个,部分基于此处找到的东西。)

2 个答案:

答案 0 :(得分:4)

归功于Toddler Lock的作者,我和他谈到了这个问题。引入的错误完全是我的。

在清单中创建一个禁用活动,其亲和力等于空字符串。在您的程序中,启用它,然后使用标记为FLAG_ACTIVITY_NEW_TASK的意图启动它。它将出现在最近的活动中。禁用该任务,它将从显示屏上消失。

制作足够的这些内容,然后充斥最近的活动显示。如果它有办法返回比你有虚拟活动更多的活动,那么用户将能够退出你的程序。

确保在退出时禁用任务,并确保如果从最近的活动中选择其中一项任务,则程序会执行合理的操作。

以下是我的清单中两个任务的示例:

    <activity android:name="com.foo.android.recentactivity.Clear1"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
              android:label="."
              android:enabled="false"
              android:icon="@drawable/clearicon"
              android:taskAffinity="" />
    <activity android:name="com.foo.android.recentactivity.Clear2"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
              android:label="."
              android:enabled="false"
              android:icon="@drawable/clearicon"
              android:taskAffinity="" />

答案 1 :(得分:1)

您无法从应用程序执行此操作。您需要使用所需的行为构建自定义系统映像。