24

この問題は、Android アプリケーションを開発しているときに発生しました。開発中に集めた知識を共有することを考えました。

4

1 に答える 1

71

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

まずINSTALL_SHORTCUT、Android マニフェスト xml にアクセス許可を追加する必要があります。

<uses-permission
        android:name="com.android.launcher.permission.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);
      }
于 2013-06-01T13:31:52.160 に答える