APP开发实战168-APP快捷图标的功能设计

来源:互联网 发布:c 高级编程第10版 编辑:程序博客网 时间:2024/05/16 02:30

30.16 APP快捷图标的功能设计

30.16.1简介

如果APP在Android7.1(API25)或更高级别的系统上运行,在APP中,可以定义一些快捷图标和特定的功能关联起来,这些快捷图标可以显示在支持此功能的桌面上,如下图所示:

每个快捷图标可以关联一个或多个intent,让用户快速启动某项功能。例如,可以使用快捷图标启动以下功能:

    在地图APP 中可以使用导航用户到一个特定的位置

    在社交APP中,可以给朋友发信息

    在游戏APP中,可以加载最近保存的游戏进度

    只有主Activity(处理MAIN action和LAUNCH category的Activity)可以有快捷图标,如果APP有多个主Activity,这些Activity可以有不同的快捷图标集合。

通常用户用手指长压桌面上的APP图标时,会显示静态和动态快捷图标,但不同的桌面APP,可能会支持不同的手势。

    虽然其它APP不能访问快捷图标里的元数据,但桌面可以访问这些数据,因此这些元数据不能包含敏感的用户信息。

    在APP中使用两种不同类型的快捷图标:静态和动态快捷图标。一个APP可以创建的静态和动态图标的数量之和不能超过五个。

30.16.2 静态快捷图标

    静态快捷图标被定义在资源文件中,打包在APK中,只有更新APP的版本,才能改变快捷图标的图标、文件描述和功能等。

    创建静态图标,需按以下步骤处理:

    1在AndroidManifest.xml文件中的主Activity声明中,增加快捷图标的资源文件说明:

<activity android:name="com.example.android.appshortcuts.Main">
    <intent-filter>
        <actionandroid:name="android.intent.action.MAIN" />
        <categoryandroid:name="android.intent.category.DEFAULT" />
        <categoryandroid:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <meta-dataandroid:name="android.app.shortcuts"  

android:resource="@xml/shortcuts"/>
</activity>

 

    2创建快捷图标的资源文件 res/xml/shortcuts.xml:

<shortcutsxmlns:android="http://schemas.android.com/apk/res/android" >
    <shortcut
        android:shortcutId="add_website"
       android:icon="@drawable/add"
       android:shortcutShortLabel="@string/add_new_website_short"
       android:shortcutLongLabel="@string/add_new_website"
        >
        <intent
           android:action="com.example.android.appshortcuts.ADD_WEBSITE"
           android:targetPackage="com.example.android.appshortcuts"
           android:targetClass="com.example.android.appshortcuts.Main"
            />
    </shortcut>
</shortcuts>

30.16.3 动态快捷图标

动态图标是通过使用ShortcutManager API在APP运行的时候被创建的,在APP运行的时候,可以改变关联的功能、更新或移除动态快捷图标。

如下创建一个打开百度网页的快捷图标:

ShortcutManager shortcutManager =getSystemService(ShortcutManager.class);


ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "scIdOpenUrl")
    .setShortLabel("Web site")
    .setLongLabel("Open the web site")
    .setIcon(Icon.createWithResource(context, R.drawable.icon_website))
    .setIntent(new Intent(Intent.ACTION_VIEW,
                   Uri.parse("https://www.baidu.com/")))
    .build();

shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));

30.16.4 Pinned快捷图标

   运行在前台的APP也可以在运行时把静态或动态快捷图标复制在桌面,这样的图标叫pinned shortcut。

    Pinnedshortcut在桌面显示为与APP图标不一样的图标,而且每个APP所能产生的pinned shortcut没有数量限制。这种图标不能被APP移除(APP可以使它不失效),可以被用户手动移除;当APP被卸载的时候,会被移除,或用户在设置中,清除APP的数据时,也会被移除。

    当一个动态快捷图标被pinned后,即使动态快捷图标被移除了,对应的pinned shortcut任然能够被看到而且可以正常使用。

    如果一个pinned shortcut基于静态快捷图标创建的,当静态快捷图标不能被使用的时候,pinned shortcut仍然保留在桌面上,但不能被使用了。

0 0
原创粉丝点击