アプリがインストールされたときに自動でホームにアイコンを作成する方法について。
パーミッションの設定
ショートカットを作成するにはcom.android.launcher.permission.INSTALL_SHORTCUTの権限が必要だ。
AndroidManifest.xmlの
AndroidManifest.xml:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
処理
アプリを起動するショートカットを作成する処理はMainActivityのonCreateに記述するのが一般的だと思う。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ショートカットを作成する関数を呼び出す
createShortcut();
}
ショートカットを作成する処理の流れとしては
- アプリの起動情報をもったインテントを作成→起動インテント
- アイコンのインテントを作成し、そのアクションに起動インテントをセットする
- sendBroadcast()でアイコンインテントを送信し、スクリーンに登録
アプリを起動するショートカットを作成する処理:
// 起動時にショートカットを作成する関数
fun createShortcut(){
val preference = PreferenceManager.getDefaultSharedPreferences(this);
// 最初の1回だけ作成する
if(!preference.getBoolean("shortcut",false)) {
// アプリを起動するインテント
val launcher_intent = Intent();
launcher_intent.setClassName(this, localClassName);
launcher_intent.action = Intent.ACTION_MAIN;
launcher_intent.addCategory(Intent.CATEGORY_LAUNCHER);
// ショートカットインテント用のアイコンを取得
val icon = Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher);
// ショートカット用インテント
val shortcut_intent = Intent();
shortcut_intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcher_intent);
shortcut_intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ショートカットタイトル");
shortcut_intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
shortcut_intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
shortcut_intent.putExtra("duplicate", false); // アイコンを重複して作らない
// ショートカットの作成
sendBroadcast(shortcut_intent);
// ショートカット作成済みであることを設定に記録
preference.edit().putBoolean("shortcut", true).commit();
}
}
「Android : Kotlin : アプリがインストールされたときにショートカットを作成する」への1件のフィードバック