IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    三方桌面支持 Android SDK 7.1 新特性 Shortcuts

    Trinea发表于 2016-12-11 13:47:22
    love 0

    Android 7.1 允许 App 自定义 Shortcuts,类似 iOS 的 3D touch。通过在桌面长按 App 弹出 Shortcut 列表,点击某个 Shortcut 快速进入某项操作,同时 Shortcut 可以拖动到桌面进行固定。

     

    目前仅 7.1 系统桌面支持该特性,三方桌面需要通过LauncherApps这个 API 支持此功能,本文主要介绍三方桌面如何接入此特性。
    可以下载ShortcutViewer查看效果:Google Play,应用宝。截图如下:
    Android Shortcuts Demo
    关于 Shortcuts 的全面介绍可见:
    第一篇:Android 7.1 新特性 Shortcuts 介绍
    第二篇:Android 7.1 新特性 Shortcuts 一些实践和目前的问题
    如果不了解 Shortcuts 基本使用建议先看上面第一篇。

     

    1. Manifest 支持 Home category

    在 AndroidManifest.xml 的 Main Launcher 对应的 Activity 内添加android.intent.category.HOME这个 category,表示此应用为桌面,如下:

    [crayon-584d59a60d874187968289/]

    必须在 Main Launcher 对应的 Activity 内设置,其中android.intent.category.HOME表示这是个桌面程序。

     

    2. 设置为默认桌面

    Android SDK LauncherAppsAPI 要求必须是默认桌面才有权限获取到所有应用 Shortcuts 信息。

     

    按 Home 键退到后台会提示是否将此应用设置为桌面,选择"始终"(某些手机可能是默认)。
    或者通过设置-应用-配置应用-主屏幕应用,选择自己的应用作为默认桌面。

     

    3. 获取各个 App 的所有 Shortcuts 信息

    通过LauncherApps.getShortcuts获取各 App Shortcuts 信息:

    [crayon-584d59a60d889188619589/]

    上面主要步骤包括:
    (1) 通过LauncherApps.hasShortcutHostPermission()判断是否拥有获取 shortcuts 信息的权限;
    (2) 通过PackageManager.queryIntentActivities(…)得到所有已安装应用,并且含有 ACTION_MAIN&CATEGORY_LAUNCHER Intent 的ResolveInfo;
    (3) 遍历每个符合条件的ResolveInfo,通过LauncherApps.getShortcuts(…)得到其 shortcuts 信息。

     

    注意:这里也可以通过其他方式得到所有适合在桌面显示的ApplicationInfo,而通过PackageManager.queryIntentActivities(…)是性能最优的方式。

     

    [crayon-584d59a60d890363843031/]

    LauncherApps.getShortcuts(LauncherApps.ShortcutQuery query, UserHandle user)的两个参数分别表示查询条件和查询的 App 对应的 UserHandle。

     

    当然这个特性仅对 Android SDK 7.1 及以上才有效,所以最好先判断下系统 API 版本才开始调用LauncherApps相关 API。



沪ICP备19023445号-2号
友情链接