2011-06-06 69 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