web-dev-qa-db-ja.com

Androidプログラムでホーム画面にショートカットを追加する方法

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

24
Chanaka udaya

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

まず、許可_INSTALL_SHORTCUT_をAndroid manifest 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);
      }
_
68
Chanaka udaya