從
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();
}
}
