2013-06-26 129 views
0

我的主要活動有以下代碼應用程序創建主屏幕上的多個快捷

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    … 


    homescreenShortcut(); 
} 

private void homescreenShortcut() { 
    Intent shortcutIntent = new Intent(); 
    shortcutIntent.setClassName(this, this.getClass().getName()); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    shortcutIntent.addCategory(Intent.ACTION_PICK_ACTIVITY); 
    Intent intent = new Intent(); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "MyApp"); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
     Intent.ShortcutIconResource.fromContext(this, R.drawable.app_icon)); 

    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    sendBroadcast(intent); 
} 

我每次啓動應用程序,它創建的主屏幕上一個新的快捷方式。有沒有一個標準或簡單的方法來確保只有一個主圖標被創建?

我想卸載以前(如果有)然後(重新)安裝。但這似乎是一個過度殺傷力。

+1

不從創建每次調用homescreenShortcut()。創建一個布爾標誌並將其存儲在共享的首選項或某處,表明您已創建了1快捷方式,然後將該調用在檢查該標誌的if語句中包裝爲「homescreenShortcut()'。除了所有這些,你真的不應該像這樣自動創建快捷方式。如果用戶想要一個快捷方式,我認爲你可能會惹惱更多的人,而不是通過做這個自動快捷方式來幫助你。 – FoamyGuy

+0

我同意,你不應該這樣做的用戶。讓用戶自己做。對不起,但如果這發生在我身上,我很可能會刪除該應用程序。 –

+0

謝謝。但我實際上並沒有制定規則。我正在爲其他人開發一個項目。 –

回答

0

添加

shortcutintent.putExtra("duplicate", false); 
相關問題