今天无意卸载应用:什么值得买、的时候发现这个功能,才知道是Shortcuts,然后看了手机中的app,QQ、QQ浏览器、网易云、高德地图、知乎、bibi时,发现这个功能

Shortcuts的介绍

其中App Shortcuts是指在桌面长按app图标而出现的快捷方式, 可以为你的app的关键功能添加更快速的入口而不用先打开app,点击快捷方式可以访问应用功能, 并且这种快捷方式也可以被拖拽到桌面单独放置, 变成单独的桌面快捷方式。

有两种shortcuts:

静态的: 在xml中定义,适用于一些通用的动作.
动态的: 由ShortcutManager发布, 可以根据用户的行为或者偏好添加, 可以动态更新.

数量

每一个应用目前最多可以有5个shortcuts(静态 + 动态)

运行条件

应用添加App Shortcuts是Android 7.1(API 25)的API,所以只能在Android 7.1的设备上显示, 同时需要launcher支持, 比如Pixel launcher(Pixel设备的默认launcher),Now launcher(Nexus设备上的launcher)现在就支持, 其他launcher也可以提供支持。

静态的shortcuts的使用

什么是Static Shortcuts? 我的理解就是利用xml写死的配置。想想BroadcastReceiver可以静态注册也可以利用java代码动态注册,这里也是一样的。 
那静态注册该如何做呢? 首先, 我们需要在res/xml目录下创建一个新的xml文件, 这里我们命名为shortcuts.xml

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"><shortcutandroid:enabled="true"android:icon="@drawable/got"android:shortcutDisabledMessage="@string/settings_disable_msg"android:shortcutId="settings"android:shortcutLongLabel="@string/settings_long_name"android:shortcutShortLabel="@string/settings_short_name"><!--注意,shortcutLongLabel和shortcutShortLabel,不可以直接引用文字,不然会报错--><intentandroid:action="android.intent.action.VIEW"android:targetClass="com.ranran.myapplication.Main2Activity"android:targetPackage="com.ranran.myapplication" /><categories android:name="android.shortcut.conversation" /></shortcut>
</shortcuts>

首先一个shortcuts标签, 然后是一个shortcut, 到这里我们大概可以猜测到这里可以注册多个shortcut, shortcut标签有很多属性, 我们来一个个的了解下.

  1. shortcutId, 不用多说, 这肯定是一个唯一的id
  2. enabled, 表示这个shortcut是否可用
  3. shortcutShortLabel, 这里是配置的短名称, 下面还会有长名称, 如果长名称显示不下, 就显示短名称
  4. shortcutLongLabel, 这里是配置的长名称, launcher会优先选择长名称显示
  5. shortcutDisabledMessage, 这个配置是在我们选择一个不可用的shortcut时给用户的一个提示

在shortcut标签下还有两个我们熟悉的标签.

intent, 这里表示我们点击shortcut时要干嘛, t

argetPackage是指定一个目标应用的包名, targetClass是我们要跳转的目标类, 这里要注意的是android:action一定要配置, 否则会崩溃
categories, 这个东西目前位置官方只给提供了android.shortcut.conversation

注意,shortcutLongLabel和shortcutShortLabel,不可以直接引用文字,不然会报错.!!!

ok, 上面的几行代码, 我们一个static shortcuts就完成了, 那如何使用呢? 是在manifest中配置activity的地方使用, 而且这个activity是有要求的. 
能配置shortcuts的activity必须要有action是android.intent.action.MAIN和category是android.intent.category.LAUNCHER

也就是说shortcuts引用在主界面 至于为什么要有这个要求, 自己去体会......

        <activity android:name=".shortcutsdynamic.MainAShortctivity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-dataandroid:name="android.app.shortcuts"android:resource="@xml/shortcuts" /></activity><activity android:name=".shortcutsdynamic.MessageActivity" />

到这里, 静态配置shortcuts我们就学习完了, 是不是很简单? 那这个静态配置是用在什么地方呢? 我想了想, 这里适用的场景一般是一些固定不变的功能, 例如你APP的设置界面, 如果是一些动态的数据, 那静态配置就不适合了, 就需要我们接下来要介绍到了动态配置了。

使用Dynamic Shortcuts(动态)

动态的shortcuts可以在用户使用app的过程中构建, 更新, 或者删除。

ShortcutManager

  • 设置或者新增 setDynamicShortcuts; addDynamicShortcuts;
  • 修改 updateShortcuts;
  • 删除 removeDynamicShortcuts; removeAllDynamicShortcuts;

动态添加三个

    /*** 动态添加三个*/@RequiresApi(api = Build.VERSION_CODES.N_MR1)private void getNewShortcutInfo() {ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1").setShortLabel("Web site").setLongLabel("第一个").setIcon(Icon.createWithResource(this, R.drawable.player)).setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.baidu.com/"))).build();ShortcutInfo shortcut2 = new ShortcutInfo.Builder(this, "id2").setShortLabel("Web site").setLongLabel("我的Github").setIcon(Icon.createWithResource(this, R.drawable.player)).setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://github.com/growuptang"))).build();ShortcutInfo shortcut3 = new ShortcutInfo.Builder(this, "id3").setShortLabel("Web site").setLongLabel("我的CSDN").setIcon(Icon.createWithResource(this, R.drawable.player)).setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://blog.csdn.net/qq_33721320"))).build();mShortcutManager.setDynamicShortcuts(Arrays.asList(shortcut, shortcut2, shortcut3));}

在onCreate中调用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {mShortcutManager = getSystemService(ShortcutManager.class);getNewShortcutInfo();}

效果如下

书到用时方恨少,纸上得来终觉浅。祝君好运!

参考链接

  1. 「捷徑」Shortcuts App
  2. [桌面] 来聊聊桌面Shortcuts应用快捷功能

Shortcuts(快捷方式) Android7相关推荐

  1. 是时候来了解android7了:shortcuts(快捷方式)

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 就在前几天的一个晚上, Google召开了它的秋季发布会, 毫无悬念的宣布了它的最新手机品牌Pixel, 与此同 ...

  2. Android shortcuts快捷方式

    创建快捷方式 快捷方式可帮助用户快速访问您的应用的某些部分,从而为他们呈现特定类型的内容. 您要如何以快捷方式来呈现内容取决于您的用例,以及快捷方式的上下文是属于应用驱动型还是用户驱动型.虽然静态快捷 ...

  3. 【详细】长按APP图标弹出快捷方式,ShortCut功能实现

    Shortcuts介绍 Android7.1(API Level 25)及以上系统可以自定义Shortcuts,通过在桌面上长按App Icon弹出Shortcut列表,点击某个shortcut可使用 ...

  4. Android版3D-Touch Shortcuts实现类似支付宝桌面快捷配置

    Android版3D-Touch Shortcuts实现类似支付宝桌面快捷配置 在Android 7.1后新增 shortcut实现桌面快捷方式,可实现类似iOS 3D-Touch的效果,给应用配置快 ...

  5. 搜集整理的一些博客导航

    简介:第一次在CSDN上发表博客,将自己关注或者看过的一些博客整理了一下,其中包含了鸿神和郭神的全部博客,包括两位大神微信公众号推荐的博客,另外还有一些安卓开发社区的博客,后续每天都会更新这个导航,希 ...

  6. Android 常用开发功能 博客导航

    转载地址:http://blog.csdn.net/ciqing123/article/details/52931663?locationNum=16&fps=1 简介:第一次在CSDN上发表 ...

  7. python英文单词-python常用150个英文单词

    1.python 蟒蛇 2. downlaods 下载 3. install 安装 4. customize 自定义 5. path 环境变量:路径 6. optional 可选的 7. featur ...

  8. android 通知历史,Android 4.3人性新功能:查看通知历史

    Android系统现在的更新步伐和速度明显慢了下来,4.1.4.2.4.3都统一在Jelly Bean一个代号下就是明证.现在,Android 4.3已经泄露出来,仍然没有太大的惊喜,只是一些细节上的 ...

  9. Jupyter Notebook的15个技巧和窍门,可简化您的编码体验

    Jupyter Notebook is a browser bases REPL (read eval print loop) built on IPython and other open-sour ...

最新文章

  1. 多伦多大学2020春季CSC311课程「机器学习导论」课件PPT
  2. 深度学习在语音识别中的声学模型以及语言模型的应用
  3. 开源代码ViewPageIndicator的使用
  4. C++读取文件,将文件内容读到string字符串里面
  5. python结构化数据_python新手入门必备—— 使用json保存结构化数据
  6. 升级php7_Drupal 8.8.0 正式发布,升级须知
  7. RCNN,fast R-CNN,faster R-CNN
  8. linux wsgi,linux中wsgi的详解(企业级)
  9. PLSQL 问题小记
  10. event mpm php,Ubuntu Apache 切换到php-fpm+mpm_event模式
  11. pandas读取csv文件数据并对指定字段使用matplotlib画折线图
  12. el-table对于超出长度限制的文本的处理(vue-cli)
  13. 微信读书vscode插件_想用 VSCode 写书?这款插件必须备上!
  14. Unity 本地化比较实用的实现方案
  15. photoshop中如何给图片加水印和去水印
  16. w10桌面不显示计算机了,win10系统电脑开机后不显示桌面的详细方案
  17. 用OneDrive生成音乐外链和图片外链
  18. 机器人视觉与计算机视觉区别--北大刘宏报告
  19. python use ftp to download/updown
  20. 第二节 python知识点梳理

热门文章

  1. matlab 旋转曲面,在matlab中实现旋转曲面的动画设计
  2. 用户画像数据指标体系之用户属性维度
  3. 0xc000007b错误、DirectX、C++组件、缺少msvcr120.dll文件等
  4. CAD高版本转低版本的方法有哪些?你一定用的到哦
  5. 财经365内参:万亿赛道迎五部门发利好
  6. 什么叫做专用的IP地址?
  7. 项目一、调用百度地图api实现电子围栏和报警信息关联
  8. 给github项目贡献代码的操作流
  9. 一、SM1P可编程步进电机控制器简介
  10. 网络表示学习相关资料