Android OS 7.1(API 25)のバージョンでは、Googleはアプリケーションを操作するための新しいメカニズムである
Android Shortcutsを提供しています。 ユーザーの利便性のために作成されたこの機能の短いレビューを書きました。

一般的なレビュー
英語の「ショートカット」から翻訳されたものが最短の方法であり、この名前はショートカットの主な目的をよく反映しています。 これにより、アプリケーションの特定のポイントに到達し、数回クリックするだけで特定のアクションを実行できます。 たとえば、ユーザーが必要な場合、ショートカットは見栄えがよくなります。
•ナビゲータで事前定義されたルートを選択します。
•メッセンジャーの友人と会話を始めます。
•最後のセーブポイントからゲームを続行します。

主なコンポーネント
ショートカットに含まれるもの:
1)特定のアクションをトリガーする意図または意図の配列。
2)この特定のショートカットを識別する識別子またはID。
3)表示されたときに表示される短いメッセージと長いメッセージ。
4)テキストの左側のアイコン。
ショートカットを操作する仕組みをよりよく理解するには、それらの分類を検討してください。
ショートカットの種類
Androidには、静的と動的の2種類のショートカットがあります(実際には3つありますが、さらに詳しく説明します)。 次に、いくつかの例と説明を使用して、各タイプのショートカットを検討します。
静的ショートカット
静的ショートカットの説明は、
xml
ファイルで提供されます。 それらは一度作成されると、アプリケーションを更新せずに削除、追加、変更することはできませんが、作成は非常に簡単です。
作成例res/xml/
含まれる
shortcuts.xml
ファイル:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="id1" android:enabled="true" android:icon="@drawable/shortcut_search" android:shortcutShortLabel="@string/shortcut_short_label" android:shortcutLongLabel="@string/shortcut_long_label" android:shortcutDisabledMessage="@string/disabled_message"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.MainActivity" /> <categories android:name="android.shortcut.conversation" /> </shortcut> </shortcuts>
AndroidManifest.xml
2、3行:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity>
ショートカットの削除またはコンポーネントの変更は、アプリケーションが更新されるまで機能しません。
アプリケーションでユーザーが操作しても変更されず、常に使用可能なアクションには静的ショートカットを使用することをお勧めします。 たとえば、新しい検索クエリを開き、通知設定に移動して、新しい会話を開始します。 ただし、たとえば、ユーザーをすぐに承認画面に送信するために静的ショートカットを使用することはお勧めできません。 しかし、すでに承認されている場合はどうなりますか? その場合、このアクションは意味がありません。 このような場合、動的なショートカットが役立ちます。
動的なショートカット
これらは、特定のイベントに応じて、リアルタイムで追加、削除、変更できます。 承認の例に戻りましょう。ユーザーが承認されていない場合、このショートカットを追加し、承認されたらすぐに削除します。
ショートカットとのすべての対話は、APIバージョン23で使用可能な
ShortcutManagerクラスを介して行われますが、そのメソッドのほとんどはAPIバージョン25でのみ使用できます。 それらの操作は非常に簡単ですが、後で詳しく説明する微妙な違いがいくつかあります。
作成例 ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1") .setShortLabel("Search") .setLongLabel("Start new search") .setIcon(Icon.createWithResource(context, R.drawable.shortcut_search)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("shortcutapp://search"))) .build(); shortcutManager.setDynamicShortcuts(Collections.singletonList(shortcut));
動的ショートカットの削除と変更も非常に簡単です。
削除する ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); shortcutManager.removeDynamicShortcuts(Arrays.asList("id1", "id2"));
変更 ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); shortcutManager.updateShortcuts(Arrays.asList(shortcut1, shortcut2));
ショートカットを修正
実際、別の種類のショートカットがあります-文字通り翻訳された場合、「固定」または「固定」ショートカットです。 次のようになります。
このようなショートカットをプログラムで作成したり、削除したりすることはできません。 これはユーザーのみが行うことができます。 しかし、コードの助けを借りて、それらを無効にすることができます(
disableShortcuts()
)。 静的ショートカットと動的ショートカットの両方を固定できます。
静的ケース静的ショートカットの場合、OS自体が対応する修正済みショートカットを修正できるのは、更新後にこの静的ショートカットが存在しない場合のみです。 手動で無効にしようとすると、静的なショートカットを動的に変更できないというメッセージとともにIllegalArgumentException
が表示されます。
ダイナミックケースダイナミックショートカットを削除すると、レンダリングされた(「修正された」)対応するショートカットがそのまま残り、使用できるようになります。 一方で、これはショートカットの数を増やすことを可能にする重大な利点ですが、一方で、動的なショートカットの削除はアクションを処理するための対応する機能の削除とも関連付けられるため、潜在的なバグの原因になります。
動的なショートカットを削除する前に、固定されたショートカットも無効にすることを確認してください。無効にしないと、アプリケーションで問題が発生する可能性があります。
ショートカットを無効にするとき、クリックしたときにユーザーに表示される対応するメッセージを設定できます。
例 ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); shortcutManager.disableShortcuts(Collections.singletonList(id), "Removed");
私たちは、ショートカットとそれらの作業全体の基本原則に精通しました。 これで、詳細、機能、実用的なヒントに進むことができます。
アプリケーションの詳細と微妙さ
1.ほとんどの場合、ショートカットを追加すると、最初に追加されたショートカットから最後に追加されたショートカットが表示され、最初に追加されたショートカットがアプリケーションアイコンに最も近くなります。 最初に静的が表示され、次に動的が表示されます。
ショートカットランクAndroid Developmentは、各ショートカットにランクがあると主張していますgetRank()
を使用して取得できます。 ただし、このランクを自分で設定することはできません; OSが独自の理由でインストールします。 これまでのところ、私たちが出会ったすべてのケースで、このランクは追加の順序に応じて設定されています。 ちなみに、ランクは負でない数値であり、この数値が低いほどショートカットの「優先度」が高くなり、アプリケーションアイコンに近づきます(ランク0が最も近い)。
2.ショートカットを作成するときは、長いメッセージと短いメッセージを設定する必要があります。 長いメッセージはリストに表示され、収まらない場合は短いメッセージが表示されます。 Googleでは、ショートメッセージを10文字以下に、ロングメッセージを25文字以下に設定することをお勧めします。
追加の事実両方のメッセージが大きすぎる場合、短いメッセージが省略形で表示されます。 また、短いメッセージに長い文字よりも多くの文字が含まれている場合でも、「固定」ショートカットはいずれの場合も短いメッセージで署名されます。
3.最大5つのショートカットを追加できますが、4つ以上追加しないことをお勧めします。 また、リストには4つ以上のショートカットが表示されません(最後に追加されたショートカットは表示されません)。 5番目のショートカットが必要な理由は謎です。タブレットにも表示されないためです。
4.静的ショートカットの
targetPackage
属性には1つの機能があります-ハードコード値のみを持つことができます。
applicationId
ビルドごとに異なる
applicationId
サフィックスを使用する場合、ショートカットを宣言するときに、リンクでtargetPackage値を指定します(例:
@string/shortcut_target_package
)。これは機能しません。
buildFlavour
アプリケーションごとに個別に
shortcuts.xml
ファイルを作成し、必要な
targetPackage
に目的のサフィックス
applicationId
手動で指定する必要があり
applicationId
。
5. Android自体が追加されたショートカットの数を規制しないことが重要です。 何らかの理由で6番目のショートカットを追加する場合、アプリケーションは
IllegalArgumentException: Max number of dynamic shortcuts exceeded
ましたをスローするだけでクラッシュします。 追加されたショートカットの数を自分で追跡します。
6.アクション属性を少なくとも1つのショートカットインテントに設定しない場合、動的ショートカットの場合、このショートカットが作成されるとアプリケーションがクラッシュし、静的ショートカットの場合、ショートカットは単純に作成されません。 ショートカットインテントのエキストラでは、たとえば
Serializable
などの一部のタイプを配置できないことに注意してください。有効なタイプは
PersistableBundleソースに表示されます。
7. 23のAPI未満のデバイスで
getSystemService(ShortcutManager.class)
を呼び出そうとすると、アプリケーションは
ClassNotFoundException
し
ClassNotFoundException
。
8.異なるアクティビティによって処理されるいくつかのインテントをショートカットに追加する場合、アクティビティの特定のスタックを構築できます。 このスタックの最下位は、最初に追加されたインテントを処理したアクティビティです。
9.ユーザーがデバイスでロックされている場合、ユーザーはショートカットを使用できません-ショートカットは暗号化されたストレージに含まれています。
10.ユーザーが別のデバイスでアプリケーションをサポートしたい場合、「修正された」ショートカットのみが再作成されます。 動的および静的は再作成されませんが、静的はアプリケーションのインストール中に再定義されます。 異なるデバイスでのアプリケーションのサポートが心配で、マニフェストで
allowBackup = false
フラグを設定しなかった場合は、動的なショートカットを手動で再作成することだけを心配する必要があります。
11. Android開発者は、対応するショートカットからアクションを実行するときに
reportShortcutUsed(String id)
メソッドを使用することもお勧めします。ショートカットをクリックするときと、アクションが同じ場合はアプリケーションでローカルにクリックするときの両方です。 開発者によると、ショートカットからの特定のアクションの使用に関する統計があるはずであり、これらの統計に基づいて特定のショートカットをユーザーに提供できます。 おそらく、ここで5番目のショートカットの可能性を明らかにする必要があります。
動作原理たとえば、ユーザーが毎晩7時にナビゲーターで帰り道を選択し、このアクションがショートカットに保存されるとします。 これに基づいて、このショートカットは、夕方7時に次回を表示するときに優先されます。 ただし、実際には、この機能の実装の単一のインスタンスにまだ遭遇していないため、この情報を確認または拒否することはできません。
最後に、Android開発者からのまだ言及されていないいくつかのヒント。
1.ショートカット(
updateShortcuts()
)の内容と意味は変更されておらず、表示されているメッセージまたはアイコンのみが変更されている場合は、ショートカットを更新します。 あるショートカットを削除して別のショートカットを追加する場合は、更新を使用せずに、削除を実行してから操作を追加します。 このアドバイスを無視すると、「固定」ショートカットであらゆる種類のインシデントを取得できます。
2.
ショートカットデザインガイドに従ってください。 これは読みやすい小さな文書です。
メイン•一般的な場合、アイコンは丸いはずです(直径-44 dp)。
•アイコンの内側には、プラス記号(サイズ-24 x 24 dp)のようなシンプルなアイコンが必要です。
•色は、アプリケーションの全体的なテーマと一致している必要があります。
•アイコンを選択するとき、右下のメインアプリケーションアイコンと共に「固定」ショートカットに表示されることを忘れないでください。したがって、次のようなものを選択しないでください。
おわりに
Androidショートカットは強力なアプリケーションツールです。 深刻な多機能アプリケーションは、時代に遅れずについていくためにそれを使用する必要があります。 このガイドが、そのようなメカニズムをアプリケーションに追加するきっかけになり、簡単に実装できるようになることを願っています。 5番目のホイールカートのようにショートカットが必要なことがわかっている場合は、アプリケーションでショートカットを使用しないでください。 機能を拡張するためではなく、ユーザーの利便性のためにショートカットが追加されるため、関連性を覚えておいてください。