Android ホーム画面上に自動的にショートカットを作成

    どうも、伊藤です。

    AndroidのアプリをGooglePlayからインストールすると、通常はドロワー(アプリ一覧)に収納されます。
    ただ、これだと2回目以降にアプリを探せなかったり、その他目的でスマートフォンを利用している際にアプリの存在を訴求できないです。
    ネイティブアプリを作るのであれば少しでもユーザーの目に止めてもらうため、ホーム画面へのショートカット設置は必須ですね。

    利用者(ユーザー)側でショートカットの自動化を設定する場合は、まずはGooglePlayストアを起動し、設定画面内の「ウィジェットの自動追加」にチェックを付けます。これで以後インストールしたアプリは自動的にホーム画面へショートカットが設定されます。

    1025_1

    1025_2

    ただ、上記設定をしていないユーザーも多いため、提供者(プロバイダー)側としては提供するアプリ内にショートカットを生成する仕組みを実装しておく必要があります。
    些細な事ではありますが、これでドロワー内に大量にあるアプリに埋もれる事は回避できます。(ホーム画面から削除された時は素直に諦めましょう…)

    ショートカット生成流れは「1. アイコンタップ時のIntent作成」 => 「2. アイコン画像とタイトルを設定」 => 「3. 1~2で作成したIntentをBroadcastしてOSに依頼」です。
    以下にサンプルロジックを記載します。

    //1. アイコンタップ時のIntentを生成(アプリケーション起動用)
    Intent targetIntent = new Intent(Intent.ACTION_MAIN);
    targetIntent.setClassName(context, “jp.foge.MainActivity”);

    //3.用(ショートカット作成依頼)のIntentを生成&1.で生成した起動用Intentを指定
    Intent i = new Intent(“com.android.launcher.action.INSTALL_SHORTCUT”);
    i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);

    //2. アイコン画像とタイトルを設定
    Parcelable icon = Intent.ShortcutIconResource.fromContext(context, R.drawable.ic_launcher);
    i.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    i.putExtra(Intent.EXTRA_SHORTCUT_NAME, getResources().getString(R.string.app_name));

    //3. 1~2で作成したIntentをBroadcastしてOSに依頼
    context.sendBroadcast(i);

    上記処理をアプリの初期Acticvity(上記でいうとjp.foge.MainActivity)などで実行すれば利用者側で自動化していなくてもアプリを一度でも起動すればホーム画面にショートカットが生成されうようになります。
    アプリを起動後、すぐにホーム画面を表示してみてください。
    少しすると赤枠部分にアイコンがにょきにょき!と表示されます。

    1025_3

    ではでは。