この問題は、Androidアプリケーションを開発しているときに発生しました。開発中に収集した知識を共有することを考えました。
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);
}
_