Android 7.1 Shortcuts应用长按快捷方式
2019-05-15 15:29:58  By: dwtedx

今天介绍一个android7.1更新的新功能,叫作Shortcuts的功能真的是太赞了, 利用这个功能以后我们就再也不用一页一页的进入我们想要的页面了, 在桌面长按图标就可以快捷进入(唉, 国产APP这个功能估计要等好久好久…),而且, 这个快捷方式是我们开发者去自定义了! 所以,,就在API发布的当天晚上, 我从文档中了解了一下这个新特性。

这个功能还是很实用的, 有了它, 我们就可以直接打开短信应用给某人发短信啦!下面我们就开始学习一下这个新的Shortcuts在开发中如何使用!


使用Static Shortcuts

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

1. XML配置

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@mipmap/record_icon_shortcuts"
        android:shortcutId="dd_record_icon"
        android:shortcutLongLabel="@string/home_record_quick"
        android:shortcutShortLabel="@string/home_record_quick"
        android:shortcutDisabledMessage="@string/home_record_quick">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dwtedx.income.MainShortcutActivity"
            android:targetPackage="com.dwtedx.income" />

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dwtedx.income.addrecord.AddRecordActivity"
            android:targetPackage="com.dwtedx.income" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>

    <shortcut
        android:enabled="true"
        android:icon="@mipmap/home_list_shortcuts"
        android:shortcutId="dd_home_list"
        android:shortcutLongLabel="@string/home_record_detail"
        android:shortcutShortLabel="@string/home_record_detail"
        android:shortcutDisabledMessage="@string/home_record_detail">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dwtedx.income.MainShortcutActivity"
            android:targetPackage="com.dwtedx.income" />

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dwtedx.income.home.IncomeListActivity"
            android:targetPackage="com.dwtedx.income" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
</shortcuts>


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


shortcutId, 不用多说, 这肯定是一个唯一的id

enabled, 表示这个shortcut是否可用

shortcutShortLabel, 这里是配置的短名称, 下面还会有长名称, 如果长名称显示不下, 就显示短名称

shortcutLongLabel, 这里是配置的长名称, launcher会优先选择长名称显示

shortcutDisabledMessage, 这个配置是在我们选择一个不可用的shortcut时给用户的一个提示


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

intent, 这里表示我们点击shortcut时要干嘛, targetPackage是指定一个目标应用的包名, targetClass是我们要跳转的目标类, 这里要注意的是android:action一定要配置, 否则会崩溃

categories, 这个东西目前位置官方只给提供了android.shortcut.conversation


2. application使用

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.shortcuts"
            android:resource="@xml/shortcuts"/>
    </activity>

    <activity android:name=".SettingsActivity" />
</application>


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

另外还有灵活性更大的动态配置API,就是 Dynamic Shortcuts,用java代码实现,关于动态配置我这里先不做过多的讲解,如果静态使用不满足需求的话,大家可以去研究一下动态配置。

若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。

想获取DD博客最新代码,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。

或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。

为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问,祝你生活愉快、工作顺心、欢迎常来逛逛。


快速评论


技术评论

DD记账
top
+