Android的App Shortcut功能

App Shortcut功能

最近手機在升級Android 7.1之后吗伤,長按某些APP圖標就會彈出菜單。
看了系統(tǒng)更新的文檔才知道該功能叫做App Shortcut,目前只有少部分的應(yīng)用支持這個功能寸莫,之后隨著Android版本的更新,將會有大批APP適配該功能鹿寨。那我們就來看一下該功能是如何實現(xiàn)的:

實現(xiàn)App Shortcuts有兩種形式:

動態(tài)形式:在運行時新博,通過ShortcutManager API來進行注冊。通過這種方式脚草,你可以在運行時赫悄,動態(tài)的發(fā)布,更新和刪除Shortcut馏慨。
靜態(tài)形式:在APK中包含一個資源文件來描述Shortcut埂淮。這種注冊方法將導(dǎo)致:如果你要更新Shortcut,你必須更新整個應(yīng)用程序
目前写隶,每個應(yīng)用最多可以注冊5個Shortcuts倔撞,無論是動態(tài)形式還是靜態(tài)形式。
動態(tài)形式

通過動態(tài)形式注冊的Shortcut慕趴,通常是特定的與用戶使用上下文相關(guān)的一些動作痪蝇。這些動作在用戶的使用過程中,可能會發(fā)生變化冕房。

ShortcutManager提供了API來動態(tài)管理Shortcut躏啰,包括:

新建:方法setDynamicShortcuts() 可以添加或替換所有的shortcut;方法addDynamicShortcuts() 來添加新的shortcut到列表中毒费,超過最大個數(shù)會報異常

更新:方法updateShortcuts(List shortcutInfoList) 更新已有的動態(tài)快捷方式丙唧;

刪除:方法removeDynamicShortcuts(List shortcutIds) 根據(jù)動態(tài)快捷方式的ID,刪除已有的動態(tài)快捷方式觅玻;方法removeAllDynamicShortcuts() 刪除掉app中所有的動態(tài)快捷方式想际;

下面是一段代碼示例:

ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);

ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1")
    .setShortLabel("Web site")
    .setLongLabel("Open the web site")
    .setIcon(Icon.createWithResource(context, R.drawable.icon_website))
    .setIntent(new Intent(Intent.ACTION_VIEW,
                   Uri.parse("https://www.mysite.example.com/")))
    .build();

shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));

靜態(tài)形式

靜態(tài)Shortcut應(yīng)當提供應(yīng)用程序中比較通用的一些動作,例如:發(fā)送短信溪厘,設(shè)置鬧鐘等等胡本。

開發(fā)者通過下面的方式來設(shè)置靜態(tài)Shortcuts:

App Shortcuts是在Launcher上顯示在應(yīng)用程序的入口上的,因此需要設(shè)置在action為“android.intent.action.MAIN”畸悬,category為“ android.intent.category.LAUNCHER”的Activity上侧甫。通過添加一個 <meta-data> 子元素來并指定定義Shortcuts資源文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myapplication">
  <application>
    <activity android:name="Main">
      <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>
  </application>
</manifest>

在res/xml/shortcuts.xml這個資源文件中,添加一個 根元素蹋宦,根元素中包含若干個 子元素披粟,每個 描述了一個Shortcut,其中包含:icon冷冗,description labels以及啟動應(yīng)用的Intent守屉。

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <shortcut
    android:shortcutId="compose"
    android:enabled="true"
    android:icon="@drawable/compose_icon"
    android:shortcutShortLabel="@string/compose_shortcut_short_label1"
    android:shortcutLongLabel="@string/compose_shortcut_long_label1"
    android:shortcutDisabledMessage="@string/compose_disabled_message1">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="com.example.myapplication"
      android:targetClass="com.example.myapplication.ComposeActivity" />
    <categories android:name="android.shortcut.conversation" />
  </shortcut>
  <!-- Specify more shortcuts here. -->
</shortcuts>

Shortcuts的簡單作用

每個Shortcut可以關(guān)聯(lián)一個或多個intents,每個intent啟動一個指定的action蒿辙; 官方給出了幾個可以作為shortcut的例子拇泛,比如:

在地圖類app中滨巴,指導(dǎo)用戶到特定的位置;
在社交類app中俺叭,發(fā)送消息給一個朋友恭取;
在媒體類app中,播放視頻的下一片段熄守;
在游戲類app中蜈垮,下載最后保存的要點;
APP Shortcut功能很實用柠横,能在自己的APP是適配該功能窃款,用戶體驗將會進一步提高。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牍氛,一起剝皮案震驚了整個濱河市晨继,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搬俊,老刑警劉巖紊扬,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唉擂,居然都是意外死亡餐屎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門玩祟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腹缩,“玉大人,你說我怎么就攤上這事空扎〔厝担” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵转锈,是天一觀的道長盘寡。 經(jīng)常有香客問我,道長撮慨,這世上最難降的妖魔是什么竿痰? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮砌溺,結(jié)果婚禮上影涉,老公的妹妹穿的比我還像新娘。我一直安慰自己规伐,他們只是感情好蟹倾,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楷力,像睡著了一般喊式。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萧朝,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天岔留,我揣著相機與錄音,去河邊找鬼检柬。 笑死献联,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的何址。 我是一名探鬼主播里逆,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼用爪!你這毒婦竟也來了原押?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤偎血,失蹤者是張志新(化名)和其女友劉穎诸衔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颇玷,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡笨农,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帖渠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谒亦。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖空郊,靈堂內(nèi)的尸體忽然破棺而出份招,到底是詐尸還是另有隱情,我是刑警寧澤渣淳,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布脾还,位于F島的核電站,受9級特大地震影響入愧,放射性物質(zhì)發(fā)生泄漏鄙漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一棺蛛、第九天 我趴在偏房一處隱蔽的房頂上張望怔蚌。 院中可真熱鬧,春花似錦旁赊、人聲如沸桦踊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽籍胯。三九已至竟闪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杖狼,已是汗流浹背炼蛤。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝶涩,地道東北人理朋。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像绿聘,于是被迫代替她去往敵國和親嗽上。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容