2013-06-01 28 views
18

この問題は、アンドロイドアプリケーションを開発していたときに発生しました。私は自分の開発中に集めた知識を共有することを考えました。アンドロイドでホーム画面にショートカットを追加する方法

+0

: Chanaka

はまた、複数のショートカットを避けるために、このコードを配置plsはあなたの重複の答えは完全に質問に対処していないことに注意してください。したがって、OPはアドバイスされたように[新しい質問をする]ことを決定しました(http://stackoverflow.com/questions/ask)。彼の自己回答には、重複している回答に対する非常に異なる情報が含まれています。 Plsは再開を検討します。 –

+0

これは、クレジットを与えなくても、古い記事をほぼ再現しているので、評判を得る簡単な方法のようです。http://viralpatel.net/blogs/android-install-uninstall-shortcu t-example/ – igorsantos07

答えて

62

Androidは、ホーム画面にショートカットを追加するために使用できるcom.android.launcher.action.INSTALL_SHORTCUTというインテントクラスを提供しています。次のコードスニペットでは、HelloWorldShortcutという名前のMainActivityアクティビティのショートカットを作成します。

まず、AndroidマニフェストXMLにINSTALL_SHORTCUTパーミッションを追加する必要があります。

addShortcut()メソッドは、ホーム画面に新しいショートカットを作成します。

private void addShortcut() { 
    //Adding shortcut for MainActivity 
    //on Home screen 
    Intent shortcutIntent = new Intent(getApplicationContext(), 
      MainActivity.class); 

    shortcutIntent.setAction(Intent.ACTION_MAIN); 

    Intent addIntent = new Intent(); 
    addIntent 
      .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut"); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
      Intent.ShortcutIconResource.fromContext(getApplicationContext(), 
        R.drawable.ic_launcher)); 

    addIntent 
      .setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    addIntent.putExtra("duplicate", false); //may it's already there so don't duplicate 
    getApplicationContext().sendBroadcast(addIntent); 
} 

ターゲットアクティビティを保持するshortcutIntentオブジェクトを作成する方法に注意してください。このインテントオブジェクトは別のインテントにEXTRA_SHORTCUT_INTENTとして追加されます。

最後に、新しいインテントをブロードキャストします。これにより、名前が EXTRA_SHORTCUT_NAME、アイコンがEXTRA_SHORTCUT_ICON_RESOURCEで定義されたショートカットが追加されます。

乾杯!重複としてマークされた改造に

if(!getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).getBoolean(Utils.IS_ICON_CREATED, false)){ 
      addShortcut(); 
      getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).edit().putBoolean(Utils.IS_ICON_CREATED, true); 
     } 
+0

よく調査された回答文書化されていない機能で –

+4

私のために働かせていない – David

+2

私は今プレイストアが自動的にそのことをユーザーにしていると思います。 (設定で変更できます)ので、デスクトップ上に2つのアイコンしか表示されません。 –

関連する問題