欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Android添加快捷方式ShortCut

 更新時間:2021年04月09日 14:21:45   作者:Tiaw.  
這篇文章主要介紹了淺談Android添加快捷方式ShortCut,對添加快捷方式感興趣的同學(xué),可以參考下

眾所周知application有4種啟動方式:

  • 點擊app啟動
  • 快捷方式
  • 通知跳轉(zhuǎn)
  • 輸入命令(adb命令等)

今天給大家簡單介紹一下快捷方式啟動的用法~

快捷方式介紹

谷歌官方在Android 7.1(API 25)新增了桌面長按彈出菜單,并且在8.0(API 26)以后可以固定快捷方式至桌面上。圍繞桌面快捷方式的需求也比較多,例如微信將聯(lián)系人、小程序都可以添加至桌面;簡書將“寫文章”添加至桌面;高德將“坐標(biāo)信息”添加到桌面。

快捷方式情景再現(xiàn)

將某個應(yīng)用添加到桌面

長按應(yīng)用打開某一個功能

快捷方式使用

將某個應(yīng)用添加到桌面

先看代碼,后面我會將這些代碼寫成工具類供大家使用:

	/**
     * @param context       當(dāng)前content
     * @param targetClass   快捷圖標(biāo)打開的界面
     * @param backClass     打開后按返回鍵返回的界面
     * @param shortCutId    shortCut 唯一id
     * @param shortCutIcon  桌面上顯示的圖標(biāo)
     */
    public void AddShortCut(Context context, Class targetClass, Class backClass, int shortCutId, int shortCutIcon) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
            if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported()) {
                Intent shortcutInfoIntent = new Intent(context, targetClass);
                shortcutInfoIntent.setAction(Intent.ACTION_VIEW);

                ShortcutInfo info = new ShortcutInfo.Builder(context, "id" + shortCutId)
                        .setIcon(Icon.createWithResource(context, shortCutIcon)).
                                setShortLabel(titles[shortCutId]).setIntent(shortcutInfoIntent).build();

                PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, backClass), PendingIntent.FLAG_UPDATE_CURRENT);
                shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.getIntentSender());
            }
        } else {
            Toast.makeText(context, "設(shè)備不支持在桌面創(chuàng)建快捷圖標(biāo)!", Toast.LENGTH_LONG).show();
        }
    }

測試:

	shortUtil.AddShortCut(
            this,
            MainActivity::class.java,
            MainActivity::class.java,
            2,
            R.drawable.ic_launcher_background
        )

效果圖(1.1):

修改快捷方式:

	/**
     * @param context       上下文
     * @param cls           要跳轉(zhuǎn)的頁面
     * @param shortCutId    shortCut 唯一id
     * @param shortCutIcon  桌面上顯示的圖標(biāo)
     * @param shortCutLabel 桌面圖標(biāo)下方顯示的文字
     */
    public void updItem(Context context, Class<?> cls, int shortCutId, int shortCutIcon, String shortCutLabel) {
        Intent intent = new Intent(context, cls);
        intent.setAction(Intent.ACTION_VIEW);
        intent.putExtra("msg", titles[shortCutId]);

        ShortcutInfo info = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            info = new ShortcutInfo.Builder(context, "id" + shortCutId)
                    .setIcon(Icon.createWithResource(context, shortCutIcon))
                    .setShortLabel(shortCutLabel)
                    .setIntent(intent)
                    .build();
            sm.updateShortcuts(Arrays.asList(info));
        }
    }

測試:

	shortUtil.updItem(
            this,
            ModifyActivity::class.java,
            2,
            R.drawable.ic_launcher_background,
            "修改快捷方式成功"
        )

效果圖(1.2):

禁用快捷方式:

 /**
     * 禁止使用快捷方式
     *
     * @param index 禁止使用下標(biāo)
     */
    public void remove(int index) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            sm.removeAllDynamicShortcuts();
            List<String> list = new ArrayList<String>();
            list.add("id" + index);
            sm.disableShortcuts(list);
        }
    }

測試:

 shortUtil.remove(2)

效果圖(1.3):

長按應(yīng)用打開某一個功能:

這里以Fragment舉例:

先來看看最終的效果:

主要代碼:

    private static int[] icons = {R.drawable.ic_launcher_background, R.drawable.ic_launcher_foreground,  R.drawable.ic_launcher_background, R.drawable.ic_launcher_foreground,};

    private static String[] titles = {"首頁", "我的", "詳情", "設(shè)置"};

/**
     * 設(shè)置默認(rèn)快捷方式
     *
     * @param context 上下文
     * @param ast     跳轉(zhuǎn)頁面
     */
    public void setShortCuts(Context context, Class ast) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            ArrayList<ShortcutInfo> list = new ArrayList<>();

            for (int i = 0; i < titles.length; i++) {
                Intent intent = new Intent(context, ast);
                intent.setAction(Intent.ACTION_VIEW);
                intent.putExtra("msg", titles[i]);
                intent.putExtra(SHORTCUT_TAB_INDEX, i);
                intent.addCategory("android.intent.category.LAUNCHER");

                ShortcutInfo build = new ShortcutInfo.Builder(context, "id" + i)
                        .setShortLabel(titles[i])
                        .setLongLabel(titles[i])
                        .setIcon(Icon.createWithResource(context, icons[i]))
                        .setIntent(intent)
                        .build();
                list.add(build);

            }
            sm.setDynamicShortcuts(list);
        } else {
            Toast.makeText(context, "該設(shè)備不支持快捷方式", Toast.LENGTH_SHORT).show();
        }
    }

在Application中注冊一下:

 

記得在清單文件聲明哦

 // 保存按鈕
        val radiolist = listOf(radioButton1, radioButton2, radioButton3, radioButton4)

        //快捷方式打開
        initShort {
            val arg0 = intent?.extras?.getInt(ShortCutUtil.SHORTCUT_TAB_INDEX)
            if (arg0 != null) {
                val let = arg0.let {
                    radioGroup.getChildAt(it)
                }
                val bun = Bundle()
                bun["title"] = (let as RadioButton).text as String
                //傳值
                blankFragment.setArguments(bun)

                radiolist[arg0].isChecked = true
            }
        }
        
	 private fun initShort(arg0: () -> Unit) {
        arg0.invoke()
    }
    
	private operator fun Bundle.set(key: String, value: String) {
	    this.putString(key, value)
	}

注意:這段代碼使用kotlin寫的,因為剛創(chuàng)建項目的時候只能創(chuàng)建kotlin,我就懶的改了

Fragment代碼很簡單,通過Arguments獲取到值賦值到TextView上即可這里就不貼代碼了

以上就是淺談Android添加快捷方式ShortCut的詳細(xì)內(nèi)容,更多關(guān)于Android快捷方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論