Android開發:生成桌面快捷方式是這樣做的

作者:笑慢

關於生成桌面快捷方式,Android提供了原生的api方法。下邊就介紹一下兼容8.0的具體做法。

Android開發:生成桌面快捷方式是這樣做的

一、首先當然是關於快捷方式的權限了。

我們需要在AndroidManifest文件中添加一下權限:

 <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
 <!-- 添加快捷方式 -->
 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
 <!-- 移除快捷方式 -->
 <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
 <!-- 查詢快捷方式 -->
 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

二、在需要生成桌面快捷方式處調用一下代碼

 /**
 * 添加快捷方式
 */
 public void addShortCutCompact(Bitmap bitmap) {
 //啓動器是否支持添加快捷方式
 if (ShortcutManagerCompat.isRequestPinShortcutSupported(mContext)) {
 Intent shortcutInfoIntent = new Intent(mContext, TestActivity.class);
 //這裏直接傳一個對象報錯,現在轉成json傳過去
 Gson gson = new Gson();
 String json = gson.toJson(ShortcutBean);
 shortcutInfoIntent.putExtra(SHORTCUT_BEAN,json );
 shortcutInfoIntent.putExtra(IS_SHORTCUT, true);
 //action必須設置,不然報錯
 shortcutInfoIntent.setAction(Intent.ACTION_VIEW);
 shortcutInfoIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 shortcutInfoIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

 ShortcutInfoCompat info = new ShortcutInfoCompat.Builder(mContext, "mama_id")
 //設置圖標icon
 .setIcon(Icon.createWithResource(context, R.drawable.icon))
 //設置名稱
 .setShortLabel("快捷方式名稱")
 .setIntent(shortcutInfoIntent)
 .build();

 //創建快捷方式
 ShortcutManagerCompat.requestPinShortcut(mContext, info,null);

 } else {
 ToastUtil.showMsg("啓動器不支持固定快捷方式");
 }
 }

三、注意點

1、點擊桌面快捷方式跳轉到目標頁面就是上邊代碼例子中的TestActivity時,如果有業務需要做一些統計之類的操作,我們可以傳遞一些數據進行操作,這裏可以直接傳遞基本數據類型,但是如果想直接傳遞一個bean對象時,是不支持的,需要我們轉成json傳遞。

2、shortcutInfoIntent.setAction(Intent.ACTION_VIEW);是必須設置的。

3、桌面快捷方式的圖標不支持網絡地址圖片,如果想要從接口獲取動態設置需要先下載下來爲一個bitmap。

用setIcon(IconCompat.createWithBitmap(bitmap))方法來設置。

關於下載網絡圖片我們有很多方法,這裏是用glide下載,列子代碼:

 /**
 * 下載快捷方式icon
 */
 private void downShortcutICon() {
 final Bitmap[] bitmap = new Bitmap[1];
 //先下載圖標 轉爲bitMap
 Glide.with(mContext).asBitmap().load(addIcon.getAppIcon()).into(new SimpleTarget() {
 @Override
 public void onResourceReady(@NonNull Object resource, @Nullable Transition transition) {

 bitmap[0] = (Bitmap) resource;
 if (bitmap[0] != null) {
 addShortCutCompact(bitmap[0]);
 }

 }

 });
 }

4、需要在AndroidManifest中的TestActivity註冊中加入 android:exported="true"標籤,這個標籤是用來表示是否能夠被其他應用程序組件調用或跟它交互。

5、另外,如小米、vivo等一些機型需要在設置中手動打開 創建桌面快捷方式權限。

Android學習PDF+架構視頻+面試文檔+源碼筆記


感謝大家能耐着性子看完

在這裏小編也分享一份自己收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點贊+評論關注我,然後加我VX:15388039515 我發給你
(或關注微信公衆號“Android開發之家”回覆【資料】免費領取)
Android開發:生成桌面快捷方式是這樣做的

Android開發:生成桌面快捷方式是這樣做的

Android開發:生成桌面快捷方式是這樣做的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章