最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談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)系人、小程序都可以添加至桌面;簡書將“寫文章”添加至桌面;高德將“坐標信息”添加到桌面。

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

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

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

快捷方式使用

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

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

	/**
     * @param context       當前content
     * @param targetClass   快捷圖標打開的界面
     * @param backClass     打開后按返回鍵返回的界面
     * @param shortCutId    shortCut 唯一id
     * @param shortCutIcon  桌面上顯示的圖標
     */
    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)建快捷圖標!", 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  桌面上顯示的圖標
     * @param shortCutLabel 桌面圖標下方顯示的文字
     */
    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 禁止使用下標
     */
    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è)置默認快捷方式
     *
     * @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的詳細內(nèi)容,更多關(guān)于Android快捷方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用User Agent分辨出Android設(shè)備類型的安全做法

    使用User Agent分辨出Android設(shè)備類型的安全做法

    這篇文章主要介紹了使用User Agent分辨出Android設(shè)備類型的安全做法,本文得出的結(jié)論是當你依據(jù)檢測UA來判斷Android手機設(shè)備,請同時檢查android和mobile兩個字符串,需要的朋友可以參考下
    2015-01-01
  • flutter布局約束原理深入解析

    flutter布局約束原理深入解析

    這篇文章主要為大家介紹了flutter布局約束原理深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 分享Android中Toast的自定義使用

    分享Android中Toast的自定義使用

    Android中的Toast是一種簡易的消息提示框,toast提示框不能被用戶點擊,toast會根據(jù)用戶設(shè)置的顯示時間后自動消失。本文將介紹Toast的自定義使用,下面一起來看看吧。
    2016-08-08
  • android中LinearLayoutManager一鍵返回頂部示例

    android中LinearLayoutManager一鍵返回頂部示例

    本篇文章主要介紹了android中LinearLayoutManager一鍵返回頂部,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Android中BaseAdapter的用法分析與理解

    Android中BaseAdapter的用法分析與理解

    這篇文章主要介紹了Android中BaseAdapter的用法分析與理解,結(jié)合一個項目開發(fā)中BaseAdapter的使用分析了BaseAdapter的功能、作用及用法理解,需要的朋友可以參考下
    2016-08-08
  • Android實現(xiàn)自制和播放錄音程序

    Android實現(xiàn)自制和播放錄音程序

    這篇文章主要為大家詳細介紹了Android實現(xiàn)自制和播放錄音程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android開發(fā)獲取傳感器數(shù)據(jù)的方法示例【加速度傳感器,磁場傳感器,光線傳感器,方向傳感器】

    Android開發(fā)獲取傳感器數(shù)據(jù)的方法示例【加速度傳感器,磁場傳感器,光線傳感器,方向傳感器】

    這篇文章主要介紹了Android開發(fā)獲取傳感器數(shù)據(jù)的方法,結(jié)合實例形式分析了Android獲取加速度傳感器、磁場傳感器、光線傳感器及方向傳感器數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 谷歌被屏蔽后如何搭建安卓環(huán)境

    谷歌被屏蔽后如何搭建安卓環(huán)境

    從5月27日開始,谷歌(Google)在華的幾乎所有的服務(wù)都處于無法使用的狀態(tài),除了搜索引擎遭到屏蔽之外,谷歌的郵箱(Gmail)、日歷(Calendar)、翻譯(Translate)、地圖(Maps)、分析(Analytics)和Google AdSense等產(chǎn)品也受到了影響。同時安裝安卓環(huán)境的時候同樣容易出現(xiàn)問題
    2014-06-06
  • Android 應(yīng)用適配 Android 7.0 權(quán)限要求詳解

    Android 應(yīng)用適配 Android 7.0 權(quán)限要求詳解

    今天小編就為大家分享一篇Android 應(yīng)用適配 Android 7.0 權(quán)限要求詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Android Listview上下拉動刷新tab滑動切換功能

    Android Listview上下拉動刷新tab滑動切換功能

    這篇文章主要介紹了Android Listview上下拉動刷新tab滑動切換功能的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04

最新評論

新化县| 洛隆县| 徐州市| 静乐县| 马关县| 海城市| 镶黄旗| 大悟县| 常州市| 绥芬河市| 庆阳市| 上蔡县| 屯留县| 建始县| 黎川县| 郑州市| 兴国县| 东城区| 临湘市| 榆树市| 铜川市| 临桂县| 扎赉特旗| 莱阳市| 正定县| 桂阳县| 广西| 葫芦岛市| 临潭县| 邹城市| 申扎县| 九江县| 万州区| 五寨县| 福建省| 进贤县| 祁东县| 巴中市| 大英县| 吉隆县| 宁明县|