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 Setterspublic 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,实现系统界面和你的程序进行通讯。