有的App会给用户提供快捷方式,8.0之前我们多是通过发送com.android.launcher.action.INSTALL_SHORTCUT
广播的方式来实现。但在8.0的系统行为变更中指出,该广播变为私有的隐式广播,因此原来创建快捷方式的方法在8.0的系统上将不再有效,官方推荐我们使用ShortcutManager来创建应用快捷方式。
快捷方式应用场景及类型
快捷方式应用场景
Android 7.1起,开发者可以创建一些跳转到特定页面的快捷方式,常见的应用场景如:
- 地图App中为用户导航到特定位置
- 社交App中向某个好友发送消息
- 多媒体App中播放电视剧的下一集
- 游戏App中加载上次保存的状态
快捷方式类型
Static shortcuts
静态快捷方式通过资源文件定义,并且打包到APK中,因此只能在更新App时才能修改此类快捷方式。
Dynamic shortcuts
动态快捷方式在App运行时使用ShortcutManager
API定义,可以在运行时创建、修改和删除。
Pinned shortcuts
固定快捷方式也是在App运行时通过ShortcutManager
API定义,App会弹出确认对话框来申请创建该快捷方式,如果用户允许,则此快捷方式将会显示在支持它的启动器(Launcher)上。
一个App最多可以创建5个静态、动态快捷方式,对于固定快捷方式的数量则没有限制,但一些Launcher应用可能不会全部显示出所创建的动态或静态快捷方式。
注意:虽然其他应用无法访问快捷方式的元数据,但Launcher应用可以,因此创建快捷方式时尽量不要涉及用户隐私。
使用静态快捷方式
应用场景
- 查看发送的消息
- 设置闹钟
- 显示用户当天的活动
创建步骤
在AndroidManifest.xml中,找到启动Activity,即设置了
android.intent.action.MAIN
和android.intent.category.LAUNCHER
这两个Intent Filter的Activity。为这个Activity设置元数据,并引用为其定义的快捷方式资源文件,如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <