Android shortcuts快捷方式實現(支付寶長按圖示彈出快捷方式入口)
前言
Android shortcuts算是比較老的技術了,現在許多諸如支付寶、百度地圖等都實現了這一功能,這一功能是Android7.1推出的新功能,但是在國內app使用的還是比較少。我們先來看一下支付寶實現的效果圖。
這樣我們在使用的時候會方便許多,個人認為這種快捷方式更適合靜態使用,比如設定等一些和資料沒有互動的地方,雖然動態註冊可以做,但是感覺不太友好。
1.新建專案
因為這個功能是Android7 推出來的,所以在新建專案的時候minsdk要設定為21,真機測試也肯定是要在Android7 以上的
2.編碼
在res目錄下新建xml目錄,新建shortcuts.xml
建一個shortcut節點
<shortcut android:shortcutId="settings" android:enabled="true" android:icon="@mipmap/ic_launcher" android:shortcutShortLabel="@string/ceshirukou" android:shortcutLongLabel="@string/kuaijieceshi" android:shortcutDisabledMessage="@string/bukeyong"> <intent android:action="android.intent.action.VIEW" android:targetPackage="hlq.jobscheduler" android:targetClass="hlq.view.activity.TestACtivity" /> <categories android:name="android.shortcut.conversation"/> </shortcut>
shortcutId, 一個唯一的id
enabled, 表示這個shortcut是否可用
shortcutShortLabel, 這裡是配置的短名稱, 下面還會有長名稱, 如果長名稱顯示不下, 就顯示短名稱
shortcutLongLabel, 這裡是配置的長名稱, launcher會優先選擇長名稱顯示
shortcutDisabledMessage, 這個配置是在我們選擇一個不可用的shortcut時給使用者的一個提示
在intent標籤中
targetPackage是指定一個目標應用的包名,
targetClass是我們要跳轉的目標類
action屬性表示執行的動作可以統一使用這個,categories用上述預設即可
如果我們點選圖示想有多個快捷方式,在下面新增shortcut標籤就可以了,最多可以配置5個
3.註冊shortcut
像廣播服務那樣,需要在配置檔案中宣告編寫的shortcuts,並且必須在預設啟動的Activity中註冊,如下:
<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>
註冊好後,執行起來,我們長按app效果圖如下所示:
我們看到執行圖示沒有適配,可以去Android8.0圖示適配:https://blog.csdn.net/huangliniqng/article/details/80434952
4.動態註冊
在Android廣播中我們都知道廣播可以動態註冊和靜態註冊,那麼快捷方式也是同樣的,上述方式為靜態註冊,快捷方式入口適合開啟固定不變的頁面,如果我們開啟的介面要和資料互動,我們可以使用動態註冊方式,接下來,我們瞭解動態註冊
4.1
首先我們得到ShortManger物件
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
然後呼叫setDynamicShortcuts(List<ShortcutInfo>)方法設定shortcuts
比如我們從陣列中得到資料,為每個資料設定快捷方式,可建的快捷方式最大個數我們可以通過
shortcutManager.getMaxShortcutCountPerActivity()得到,使用ShortcutInfo.Builder設定屬性
for(int i = 0;i < shortcutManager.getMaxShortcutCountPerActivity(); i++){
Intent intent = new Intent(this, TestActivity3.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra("msg", "我和" + name[i] + "聊天");
ShortcutInfo info = new ShortcutInfo.Builder(this, "id" + i)
.setShortLabel(name[i])
.setLongLabel("朋友:" + name[i])
.setIcon(Icon.createWithResource(this, R.mipmap.ic_launcher_round))
.setIntent(intent)
.build();
infos.add(info);
}
shortcutManager.setDynamicShortcuts(infos);
效果圖如下圖所示:
我們可以將這些快捷方式單獨拉出來,獨立成一個小app,和qq聊天為好友設定快捷方式類似
好啦,上述就是Android開發 快捷方式的使用了
歡迎關注技術公眾號,微訊號搜尋ColorfulCode 程式碼男人
分享技術文章,投稿分享,不限技術種類,不限技術深度,讓更多人因為分享而受益。