2010-01-02 116 views
0

我想添加主屏幕快捷方式到個人聊天室,在我的應用程序。這裏是我的代碼,這樣做:添加主屏幕快捷方式時,奇怪的力量在關閉acore

Intent roomIntent = roomIntent(room).putExtra("shortcut", true); 

Intent intent = new Intent(); 
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, roomIntent); 
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, room.name); 

Parcelable resource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, resource); 

setResult(RESULT_OK, intent);  
finish(); 

當我去的快捷方式添加到我的主屏幕上,我得到一個強制關閉,而不是我自己的過程,但在com.android.acore(!)。我運行了調試器並驗證了我的代碼一直執行到完成調用()。

如果我這樣做,而不是爲EXTRA_SHORTCUT_ICON:

intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, R.drawable.icon); 

它工作正常,並將該快捷方式,在彈出的快捷正確的行爲 - 但當然的快捷方式有普通的Android圖標,不是我的,因爲這不是指定圖標的正確方法。

當我看看其他應用程序的源代碼,以及在官方Android參考區域中的the one example,我的代碼看起來完全相同。我的圖標是我用於應用程序主圖標的標準48x48 png,沒有任何問題。我在運行股票1.6的模擬器上驗證了這個問題,沒有測試過其他版本。

我不知道我在做什麼錯。有任何想法嗎?

+0

你是否在模擬器上執行你的代碼?大多數情況下,當我在模擬器上部署我的應用程序時,我在android.acore上獲得了一些'強制關閉'或其他。但它不影響我的應用程序,當我在真實設備上進行調試時,我沒有得到它們。我只是忽略它們... – tbruyelle 2010-01-02 23:53:27

+0

我也在我的手機上測試了這個,它運行着最新的CyanogenMod。它得到相同的錯誤。我去了模擬器,以確保它不是CyanogenMod特定的東西。在這兩種情況下,這個錯誤也是100%一致的,所以我不認爲它是特定於設備或模擬器的東西。 – Konklone 2010-01-03 00:48:20

回答

1

ACTION_CREATE_SHORTCUT的Javadoc說,你應該使用EXTRA_SHORTCUT_ICON_RESOURCEIntent.ShortcutIconResource對象,而不是你正在使用的EXTRA_SHORTCUT_ICON鍵,它用於直接放置BitmapIntent演員。

你也應該爲Android bug tracker上的崩潰提交一個bug,因爲得到這樣的錯誤不應該降低acore。

+0

當然可以。我不斷將我的代碼與其他人的代碼進行比較,但沒有發現這種變化。 這是不同的,因爲我最初從我的另一個應用程序複製/粘貼快捷方式代碼,實際上確實將一個位圖直接放入額外。 謝謝! – Konklone 2010-01-03 18:51:42

+0

很好用! :) – 2010-01-03 18:54:03

+1

我按照你的意見,並提出了一個錯誤: http://code.google.com/p/android/issues/detail?id=5791 – Konklone 2010-01-03 19:46:44

相關問題