Android Nougat(7.0) 下拉通知栏创建自定义快捷设置

2,801 阅读1分钟

Android Nougat(7.0) 可以往通知栏的快捷设置里添加自定义按钮了

Android 把快捷设置项叫做Tile(瓦片),创建Tile需要一个TileService

TileService

继承TileService实现一个QuickService,在AndroidManifest.xml中声明 权限:android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" 过滤器:android:name="android.service.quicksettings.action.QS_TILE"

public class QuickService extends TileService {
}
AndroidManifest.xml

    
        

        

完成上面的代码,就已经可以在通知栏的快捷设置添加我们的设置项了

TileService.工作流

public int onTileAdded()public void onTileRemoved()public void onStartListening ()public void onStopListening ()public void onClick ()
TileService.获取对应的 Tile
public final Tile getQsTile ()

Tile

Tile Setters
public void setIcon (Icon icon)public void setLabel (CharSequence label)public void setState (int state)public void setContentDescription (CharSequence contentDescription)
Title Update
public void updateTile ()

修改了Tile的属性,需要手动调用updateTile(),才会更新。

生命周期

编辑界面 把按钮拖进快捷设置栏
D/QuickService: onCreate
D/QuickService: onBind
D/QuickService: onTileAdded
D/QuickService: onDestroy
快捷设置栏中按钮可见
D/QuickService: onCreate
D/QuickService: onBind
D/QuickService: onStartListening
快捷设置栏按钮不可见
D/QuickService: onStopListening
D/QuickService: onDestroy
点击按钮 编辑界面 把按钮移除快捷设置栏
D/QuickService: onStopListening
D/QuickService: onDestroy
D/QuickService: onCreate
D/QuickService: onBind
D/QuickService: onTileRemoved
D/QuickService: onDestroy

透过生命周期,不难看出,Android API的设计,系统会使用bind方式启动对应的TileService,实现系统界面和你的程序进行通讯。

源码

github.com/gavinliu/Cu…