2010-05-29 38 views
9

我剛剛創建了自己的「主頁」以替換股票android one或Sense。重寫Home鍵長按類別.HOME活動

所有工作正常,我得到我想要的。我唯一的問題是用我自己的啓動器替換爲長按Home鍵(通常顯示您最近啓動的6項活動)。

我成功地使用此代碼替換MENU鍵長按:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

//Log.i(TAG,"Keycode: "+keyCode); 

if (keyCode == KeyEvent.KEYCODE_MENU) { 
    // this tells the framework to start tracking for 
    // a long press and eventual key up. it will only 
    // do so if this is the first down (not a repeat). 

    event.startTracking(); 
    return true; 
} 
(...) 

和長按這部分部分:

@Override 
    public boolean onKeyLongPress(int keyCode, KeyEvent event) { 

     //Log.i(TAG,"LONG"+keyCode); 
     Toast.makeText(Launcher.this,"LONG "+keyCode, Toast.LENGTH_SHORT).show(); 

     if (keyCode == KeyEvent.KEYCODE_MENU) { 
     (...) 

但問題是,我沒能用KeyEvent.KEYCODE_HOME替換KeyEvent.KEYCODE_MENU

是否在代碼中鎖定了某些內容以避免用戶使用Home長按?

非常感謝您提供給我的所有信息。

回答

8

一切我所讀過的狀態,這不能做......這是在Android入門後,我問了一個非常類似的問題:

http://groups.google.com/group/android-beginners/browse_thread/thread/d8cdcd1c52d79ef1/0f4b184da6f248a9?lnk=gst&q=home+key#0f4b184da6f248a9

然而,最近我通過一個成功的應用程序,您可以通過雙擊主頁鍵來啓動它,因此必須有一些可以完成的事情。我研究了這種方法一段時間,但無法使其工作。現在我知道別人理解了它我會採取另一種刺吧....

編輯 雖然覆蓋的Home按鍵長按無法做到的,我已經找到一種方法成功實現主頁按鈕的雙擊。造成這種情況的總體思路是:

  1. 讓您的應用充當家庭更換應用(看看SDK樣本中的樣本家庭應用)
  2. 允許在你的應用程序的方式來指定主應用程序(這是非常簡單的向用戶展示家庭替換應用的列表)
  3. 在首次按下主頁按鈕時啓動計時器。
  4. 如果定時器超時,啓動主應用
  5. 如果用戶按下Home鍵計時器停止前一秒鐘的時間,啓動您的應用程序

從本質上講,家庭更換活動什麼都不做更多比啓動用戶指定的真正的家庭應用程序或啓動您的應用程序...它永遠不會顯示自己的用戶界面。

我發現這個功能非常好,而且實際上有一個在Android Market上發佈的應用程序可以實現這一點。如果你想看到它的行動,它被稱爲「快速啓動」和出版商名稱被列爲「MagouyaWare」

希望這會有所幫助!

+0

那你有沒有發現新的東西?它是哪個應用程序? – 2011-01-26 12:23:29

0

我找到了解決HOME鍵的方法。爲了您的應用程序設置的表現爲

<action android:name="android.intent.action.MAIN" />       <category android:name="android.intent.category.HOME" />        <category android:name="android.intent.category.DEFAULT" />       <category android:name="android.intent.category.MONKEY"/> Now ur application is an alternate Launcher application. 

使用亞洲開發銀行,以及禁止使用包管理器

時禁用com.android.launcher2啓動器應用中。

現在主頁按鍵將停留在同一屏幕上。

其實沒有太多code.I會盡力解釋它,如果它有幫助。 對於清單文件中的Andriod的應用程序,我們一般保持意圖過濾器: -

Instaed我們應該使意圖過濾器的樣子: -


這是與LAuncher相同的意圖過濾器。

現在我們有一個替代launchjer應用程序。爲了使它成爲唯一的啓動器應用程序,我們必須解除/禁用現有的啓動器應用程序(android中的默認啓動器)。

爲此,我們需要連接設備/仿真器並啓動adb(android調試橋)。 然後按照下面的步驟: -

亞行外殼

點列表包//這將列出安裝

時禁用com.android.launcher的所有軟件包//這將禁用啓動器應用中。

重新啓動。

+0

你可以在你的博客中寫一個指南,讓你給這個link.i發現,在很多鏈接你給出答案,我認爲你可以幫助很多人包括我。謝謝你 – pengwang 2010-12-28 01:49:14

+0

我給了這個負面評價,因爲它不回答原來的問題。最初的問題是如何取代長按Home鍵的功能。這是無法完成的。此外,我強烈建議禁用默認的家庭應用程序。僅僅因爲它可以完成並不意味着它應該完成。做amiekuser建議的最好方法是使用內置的Android設置默認應用程序的方法。如果您有多個家庭替代應用程序,並按下主鍵,您會看到一個對話框,詢問您要使用哪個應用程序(並允許您將其設置爲默認應用程序) – Justin 2011-02-01 04:44:16

3

您可以通過添加體現註冊長按HOME鍵

假貨活動:

<intent-filter> 
    ... 
    <action android:name="android.intent.action.ASSIST" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
+0

太棒了!它適用於三星Galaxy View。它的作用與相同。我想要長時間按任務按鈕也是一樣的... – kmas 2016-08-21 20:30:57