App Shortcutsを実装してみた
App Shortcutsとは?
Android7.1で追加される、アプリのショートカットです。
iOSでいうクイックアクションみたいなものです。
どのように使うのか?
iOSのクイックアクションはアプリのアイコンを強く押せば出てきますが、Androidには3D Touchがないのでタップの強弱を判別できません。
そのためAndroidではアプリのアイコンをロングタップで使えるようになっています。
どのように実装するのか?
(SDKの導入に関しての説明は省かせていただきます)
メインのActivityにApp Shortcutsを設定する
<application
…(省略)…
>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- App Shortcutsの設定 -->
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
…(以下に別のActivityを追加)…
</application>
intent-filter
でホームにアイコンを表示するよう設定しているactivityに、App Shortcutsを表示するためmeta-data
を追加します。
App Shortcutsの内容を設定する
res内にxml/shortcuts.xmlを追加します。
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="shortcut1"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:shortcutShortLabel="@string/shortcut_short_label1"
android:shortcutLongLabel="@string/shortcut_long_label1"
android:shortcutDisabledMessage="@string/shortcut_disable_label1">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.numero.appshortcutsexample"
android:targetClass="com.numero.appshortcutsexample.SubActivity" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
<shortcut
android:shortcutId="shortcut2"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:shortcutShortLabel="@string/shortcut_short_label2"
android:shortcutLongLabel="@string/shortcut_long_label2"
android:shortcutDisabledMessage="@string/shortcut_disable_label2">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.numero.appshortcutsexample"
android:targetClass="com.numero.appshortcutsexample.SubActivity" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
<shortcut
android:shortcutId="shortcut3"
android:enabled="false"
android:icon="@mipmap/ic_launcher"
android:shortcutShortLabel="@string/shortcut_short_label3"
android:shortcutLongLabel="@string/shortcut_long_label3"
android:shortcutDisabledMessage="@string/shortcut_disable_label3">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.numero.appshortcutsexample"
android:targetClass="com.numero.appshortcutsexample.SubActivity" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
</shortcuts>
shortcutのタグでid、icon、labelを設定し、呼び出したいactivityを設定したintentタグを囲むだけです。
ショートカットはxml上で記述した順序とは逆の、下から上へ追加されていきます。
3つ目のショートカットがandroid:enabled="false"
となっているので表示されていません。
shortcutタグの説明
android:enabled
ショートカットの表示、非表示
android:icon
ショートカットのアイコン
android:shortcutLongLabel
ショートカット一覧のタイトル名
android:shortcutShortLabel
App Shortcutsより作成したショートカットのタイトル名
詳しくは後述参照
android:shortcutDisabledMessage
App Shortcutsより作成したショートカットが何らかの方法でandroid:enabled="false"
となった場合に出てくるメッセージ
詳しくは後述参照
App Shortcutsからショートカットの作成
ショートカット右に二重線のアイコンですが、App Shortcutsからショートカットアイコンを作成できるようになっています。
二重線のアイコンをドラッグすると、ホーム画面にショートカットを設置することができます。
LongLabel2のショートカットを作成すると以下のようになります。
先程のandroid:shortcutShortLabel
はこのときのタイトル名となっています。
左のMapsを見てもらうとわかりますが、ここで作成されるショートカットのアイコンはandroid:icon
で指定したもの+右下にアプリのアイコンになります。
このショートカットを作成した状態でandroid:enabled="false"
とすれば
このようにアイコンが白くなり、タップするとandroid:shortcutDisabledMessage
で指定した文字が表示されます。
補足
今回Android Studio2.1.3で試してみたのですが、shortcutタグのandroid:shortcutShortLabel
などで直接文字を打ち込むとビルドエラーがでました。
変更があるかもしれませんが、labelの文字列はres/strings.xmlに記述しましょう。
参考
Author And Source
この問題について(App Shortcutsを実装してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Nabe1216/items/08e25684859ad268395a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .