Android 7.0新特性——桌面長按圖示出現快捷方式

lvxiangan發表於2018-11-15

簡介

Android 7.0版本有一個新特性:如果app支援,可以通過長按app圖示出現一些快捷操作。一些熱門應用舉例: 
  
      
實現也比較簡單,有兩種實現方式:靜態配置和動態配置。

一、靜態配置

只需要兩步: 
1. 建立shortcuts.xml配置資原始檔; 
2. 在Manifest中新增meta-data配置。

1.1 建立shortcuts.xml配置資原始檔

在工程res目錄下新增xml目錄,並在xml目錄下建立配置檔案: 

 
shortcuts.xml配置內容:

<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">

    <shortcut
        android:shortcutId="background_settings"
        android:enabled="true"
        android:icon="@drawable/ic_launcher"
        android:shortcutShortLabel="@string/shortcuts_back_short_label"
        android:shortcutLongLabel="@string/shortcuts_back_long_label"
        android:shortcutDisabledMessage="@string/shortcuts_back_disable_msg">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.sy.androidofeatures"
            android:targetClass="com.sy.androidofeatures.background.BackgroundTestActivity" />
        <categories android:name="android.shortcut.conversation"/>
    </shortcut>

    <shortcut
        android:shortcutId="pip_settings"
        android:enabled="true"
        android:icon="@drawable/ic_launcher"
        android:shortcutShortLabel="@string/shortcuts_pip_short_label"
        android:shortcutLongLabel="@string/shortcuts_pip_long_label"
        android:shortcutDisabledMessage="@string/shortcuts_pip_disable_msg">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.sy.androidofeatures"
            android:targetClass="com.sy.androidofeatures.pip.PictureInPictureActivity" />
        <categories android:name="android.shortcut.conversation"/>
    </shortcut>

</shortcuts>

 


1.2 在Manifest中新增配置

注意:只能在有action是android.intent.action.MAIN和category是android.intent.category.LAUNCHER的Activity中配置才有效!

<application
        <!-- 其他配置項... -->
        <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>
        <!-- 其他配置項... -->
    </application>

 


二、動態配置

1.1動態新增

fun onClickshortcutsAdd(v: View) {
        var shortcutManager = getSystemService(ShortcutManager::class.java) as ShortcutManager
        var intent = Intent(this, NotificationChannelActivity::class.java)
        intent.action = Intent.ACTION_VIEW
        var shortcut = ShortcutInfo.Builder(this, "noti_channel_demo")
                .setIcon(Icon.createWithResource(this, R.drawable.ic_launcher))
                .setShortLabel("通知渠道")
                .setLongLabel("通知渠道演示")
                .setIntent(intent)
                .build()
        shortcutManager.addDynamicShortcuts(listOf(shortcut))
    }

 


1.2動態刪除

動態配置的快捷方式也可以刪除,並且只能刪除動態配置的,靜態配置的是不能動態刪除的!從sdk的api提示就可以知看出,並沒有提供刪除靜態配置項的介面: 

 
刪除方式:

fun onClickshortcutsDel(v: View) {
        var shortcutManager = getSystemService(ShortcutManager::class.java) as ShortcutManager
        shortcutManager.removeDynamicShortcuts(listOf("noti_channel_demo"))
    }

 

1.3 動態新增和刪除演示

長按出現的快捷方式條目,都還可以長按拖動到桌面,放置為一個單獨固定的桌面快捷方式,靜態和動態配置的都可以。 




 


轉自:https://blog.csdn.net/china_style/article/details/79570400 

相關文章