Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】プログラムからホーム画面にショートカットを作成する方法

この記事では、Androidアプリからプログラム的にホーム画面へショートカットアイコンを追加する方法を解説します。ShortcutManagerCompatを利用することで、Android 8.0(Oreo)以降の端末にも対応したショートカットのピン留めが可能になります。

手順1:新規プロジェクトの作成

Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力しながら新しいプロジェクトを作成します。

手順2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   android:orientation = "vertical"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent">
   <TextView
      android:id = "@+id/text"
      android:layout_width = "fill_parent"
      android:gravity = "center"
      android:textSize = "30sp"
      android:layout_height = "wrap_content"
      android:text = "Click here"/>
</LinearLayout>

上記のコードでは、画面中央にクリック用のTextViewを1つ配置しています。このテキストをタップするとショートカット作成処理が呼び出される仕組みです。

手順3:MainActivity.java の編集

src/MainActivity.java に以下のコードを追加します。

package com.example.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.content.pm.ShortcutInfoCompat;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.support.v4.graphics.drawable.IconCompat;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
   private static final String PREF_KEY_SHORTCUT_ADDED = "Sairam";
   TextView text;
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      text = findViewById(R.id.text);
      text.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if (ShortcutManagerCompat.isRequestPinShortcutSupported(getApplicationContext())) {
               ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(getApplicationContext(), "#1")
                  .setIntent(new Intent(getApplicationContext(), MainActivity.class).setAction(Intent.ACTION_MAIN)) // !!! intent's action must be set on oreo
                  .setShortLabel("Test")
                  .setIcon(IconCompat.createWithResource(getApplicationContext(), R.drawable.logo))
                  .build();
               ShortcutManagerCompat.requestPinShortcut(getApplicationContext(), shortcutInfo, null);
            } else {
               Toast.makeText(MainActivity.this,"launcher does not support short cut icon",Toast.LENGTH_LONG).show();
            }
         }
      });
   }
}

ポイントは以下の通りです。

  • isRequestPinShortcutSupported() で、ランチャーがショートカットのピン留めに対応しているかどうかを事前にチェックできます。
  • ShortcutInfoCompat.Builder を使って、ID・Intent・ラベル・アイコンを指定したショートカット情報を構築します。
  • Android 8.0(Oreo)以降では、Intentに setAction(Intent.ACTION_MAIN) を必ず設定する必要がある点に注意してください。
  • 対応していないランチャーの場合は、Toastでその旨をユーザーに通知します。

手順4:Manifest.xml の編集

AndroidManifest.xml に以下のコードを追加します。ショートカットを作成するには INSTALL_SHORTCUT パーミッションの宣言が不可欠です。

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
   package = "com.example.myapplication">
   <uses-permission android:name = "android.permission.INTERNET" />
   <uses-permission android:name = "com.android.launcher.permission.INSTALL_SHORTCUT" />
   <application
      android:allowBackup = "true"
      android:icon = "@mipmap/ic_launcher"
      android:label = "@string/app_name"
      android:roundIcon = "@mipmap/ic_launcher_round"
      android:supportsRtl = "true"
      android:theme = "@style/AppTheme">
      <activity
         android:name = ".MainActivity"
         android:configChanges = "keyboardHidden|orientation|screenSize">
         <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <action android:name = "android.intent.action.CREATE_SHORTCUT" />
            <category android:name = "android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリの実行と動作確認

それでは、実際にアプリを実行してみましょう。ここでは、実機のAndroidスマートフォンをPCに接続していることを前提とします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続したモバイルデバイスを選択すると、端末側に以下のような初期画面が表示されます。

【Android開発】プログラムからホーム画面にショートカットを作成する方法

画面上のテキストをタップしてショートカットを作成したら、ホームボタンを押してホーム画面に戻ります。すると、以下のように新しいショートカットアイコンが追加されていることを確認できます。

  1. 【Android】ホーム画面からアイコンが消えたときの対処法5選

    デバイスに多数のアプリをインストールしていると、特定のアプリのアイコンがどこにあるのか分からなくなることがあります。ホーム画面からアイコンが消えてしまう原因はいくつか考えられます。別の場所へ移動したか、誤って削除・無効化された可能性があります。同じ問題でお困りの方は、このガイドがAndroidのホーム画面からアイコンが消える問題の解決に役立ちます。最後まで読んで、こうした状況に対応するためのさまざまなテクニックを身につけましょう。Androidのホーム画面から消えたアイコンを復元する方法方法1:デバイスを再起動する軽微な不具合やバグ、グリッチを解消する最も簡単な方法は、Androidスマートフ

  2. iOS 15でiPhoneのホーム画面を快適に管理する方法

    iPhoneのホーム画面は、気づけばアプリだらけになってしまうもの。幸い、散らかった状態を解消する方法はいくつも用意されています。アプリやウィジェットを移動したり、フォルダにまとめたり、ウィジェットを重ねて表示したりと、さまざまな整理術が使えます。 iOS 14ではホーム画面のページ全体を非表示にする機能が登場し、「Appライブラリ」の導入によって、アプリを削除せずにホーム画面から取り除くことも可能になりました。 iOS 15以降にアップデートしたばかりの方なら、さらに便利なホーム画面管理機能を活用できます。以下で詳しく解説していきます。 ホーム画面のページを削除する ほとんど使わ