2011-06-06 39 views
3

我有一个专为平板电脑设计的应用程序,许多人将摄像头作为日常工作的一部分。虽然主管离开应用程序是合适的和必要的,但其他人意外地应该很难这样做。但是,长按Home键很容易意外。我自己做了。这提出了最近的任务清单;用户可以点击他们中的任何一个,并且他们会丢失,因为其中一些并不像普通智能手机拥有者那样复杂。改变getRecentTasks的结果

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

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

(我不是在谈论home键的短按,我已经想通一出,部分基于东西在这里找到。)

回答

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="" /> 
+2

请注意,这显然是对平台的滥用,因此该平台可能会在未来保护自己。 – hackbod 2011-06-23 13:57:16

+0

我尝试使用添加禁用的活动并在运行时启用的方法,如答案中指定的,但它仍然显示最近打开的应用程序的最新应用程序列表。总之,它的正常行为没有改变。请帮助我,谢谢。 – MaheshValu 2011-10-15 07:33:32

+0

很抱歉听到您遇到问题。我猜测我解释时我还不清楚。首先忽略禁用/启用部分 - 一旦你有它的工作,你可以摆弄它。最简单的形式是在程序开始时有一个FLAG_ACTIVITY_NEW_TASK意图,它的唯一目的是作为一个额外的启动活动。它不应该做比退出更多的事情。看看它是否出现在最近的活动中 - 如果没有,那么在意图使用或清单中没有设置正确的东西。一旦你有这个工作,再做五个,并让他们链接到对方。 – Robert 2011-11-09 16:31:25

1

你不能从一个应用程序做到这一点。您需要使用您想要的行为构建自定义系统映像。

+2

的事实至少一个现有的应用程序DOS这一点 - 没有自定义系统映像 - 说你的答案是不正确。下载“幼儿锁”,运行它,并按住home键。 – Robert 2011-06-07 15:32:59