Android App Shortcuts

吳小龍同學發表於2016-11-01

簡介

Android 7.1允許您定義應用程式中特定操作的快捷方式。這些快捷鍵可以顯示桌面,例如Nexus和Pixel裝置。快捷鍵可讓您的使用者在應用程式中快速啟動常見或推薦的任務。
每個快捷鍵引用一個或多個意圖,每個意圖在使用者選擇快捷方式時在應用程式中啟動特定操作。可以表達為快捷方式的操作示例包括:

在跳轉頁面時將使用者導航到特定位置。
在通訊應用程式中傳送訊息給朋友。
在媒體應用中播放電視節目的下一集。
在遊戲應用程式中載入最後一個儲存點。

App Shortcuts,一次最多可為您的應用釋出4個快捷方式,當超過4個時,只顯示最新四個,動態新增會拋Max number of dynamic shortcuts exceeded。但是,使用者可以將應用的快捷方式複製到啟動器上,從而建立固定的快捷方式。使用者可以建立和訪問無限數量的固定快捷方式,以觸發應用中的操作。

更多介紹:developer.android.com/preview/sho…

效果預覽

Android App Shortcuts

說明:需要長按桌面圖示,然後就可以定義進入自己想要的頁面了

Android App Shortcuts

說明:可以長按拖出建立一個固定的快捷方式

使用方法

xml實現

1、AndroidManifest.xml
啟動頁,新增meta-data標籤

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait">
    <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>複製程式碼

2、res/xml/shortcuts.xml

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@drawable/ic_content_copy_24dp"
        android:shortcutDisabledMessage="@string/shortcut_disabled_message1"
        android:shortcutId="shortcutId1"
        android:shortcutLongLabel="@string/shortcut_long_label1"
        android:shortcutShortLabel="@string/shortcut_short_label1">
        <intent
            android:action="action1"
            android:targetClass="com.wuxiaolong.designsupportlibrarysample.AppShortcutsActivity"
            android:targetPackage="com.wuxiaolong.designsupportlibrarysample"/>
    </shortcut>
    <shortcut
        android:enabled="true"
        android:icon="@drawable/ic_share_24dp"
        android:shortcutDisabledMessage="@string/shortcut_disabled_message1"
        android:shortcutId="shortcutId2"
        android:shortcutLongLabel="@string/shortcut_long_label2"
        android:shortcutShortLabel="@string/shortcut_short_label2">
        <intent
            android:action="action2"
            android:targetClass="com.wuxiaolong.designsupportlibrarysample.BottomNavigationActivity"
            android:targetPackage="com.wuxiaolong.designsupportlibrarysample"/>
    </shortcut>

</shortcuts>複製程式碼

說明:android:shortcutLongLabel和android:shortcutShortLabel,顯示文字,預設顯示long,當long很長,就顯示short;android:targetClass跳轉的頁面;android:targetPackage包名

程式碼實現

新增App Shortcuts

ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo shortcut = new ShortcutInfo.Builder(mActivity, "shortcutId3")
        .setShortLabel("Web site")
        .setLongLabel("Open the web site")
        .setIcon(Icon.createWithResource(mActivity, R.drawable.ic_link_24dp))
        .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://wuxiaolong.me/")))
        .build();
try {
    shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
} catch (Exception e) {
    e.printStackTrace();
}複製程式碼

刪除App Shortcuts

ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
List<ShortcutInfo> shortcutInfoList = shortcutManager.getDynamicShortcuts();//可以做個list管理App Shortcuts,這裡略
List<String> list = new ArrayList<>();
list.add("shortcutId3");
try {
    shortcutManager.removeDynamicShortcuts(list);
} catch (Exception e) {
    e.printStackTrace();
}複製程式碼

隱藏App Shortcuts

 ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
 List<String> list = new ArrayList<>();
 list.add("shortcutId3");
 try {
     shortcutManager.disableShortcuts(list);
 } catch (Exception e) {
     e.printStackTrace();
 }複製程式碼

這樣就實現了App Shortcuts效果了

原始碼

github.com/WuXiaolong/…

感謝

官方文件
pcevikogullari/AndroidShortcuts

最後

App Shortcuts只能在Android 7.1手機才有的效果,很炫很便捷,也不知道國內手機什麼時候能看到App Shortcuts真容。

微信公眾號

我的公眾號:吳小龍同學,歡迎微信掃一掃關注。

Android App Shortcuts

相關文章