从
frameworks\base\packages\SystemUI\src\com\android\systemui\qs\QSTile.java
类分析,位置信息、飞行模式、手电筒、蓝牙等按钮的点击都会通过此类的handleClick()抽象方法。
abstract protected void handleClick();
那么解决问题也很简单,针对不同的按钮的点击事件添加handleClick()即可,如果统一处理请自行找办法。
比如位置信息按钮:
frameworks\base\packages\SystemUI\src\com\android\systemui\qs\tiles\LocationTile.java
直接在handleClick()方法尾部添加:
@Override protected void handleClick() { final boolean wasEnabled = (Boolean) mState.value; MetricsLogger.action(mContext, getMetricsCategory(), !wasEnabled); mController.setLocationEnabled(!wasEnabled); mEnable.setAllowAnimation(true); mDisable.setAllowAnimation(true); if(!wasEnabled){ //添加内容 ((StatusBarManager) mContext.getSystemService(Context.STATUS_BAR_SERVICE)).collapsePanels(); } }