提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
模仿开发者模式增加点击事件
这里,我们只做修改, 不分析具体实现
一、找到实现PreferenceController类
CustomizeBuildVersionPreferenceController
代码如下(示例):
diff --git a/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/deviceinfo/CustomizeBuildVersionPreferenceController.java b/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/deviceinfo/CustomizeBuildVersionPreferenceController.java
index b8257e3be3..85e624bd9e 100755
--- a/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/deviceinfo/CustomizeBuildVersionPreferenceController.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/deviceinfo/CustomizeBuildVersionPreferenceController.java
@@ -16,11 +16,18 @@
package com.mediatek.settings.deviceinfo;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
import android.os.SystemProperties;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import com.mediatek.settings.FeatureOption;
@@ -32,6 +39,8 @@ public class CustomizeBuildVersionPreferenceController extends AbstractPreferenc
private static final String CUSTOM_BUILD_VERSION_PROPERTY
= "ro.vendor.mediatek.version.release";
+ private int mEngHitCountdown = 4;
+
public CustomizeBuildVersionPreferenceController(Context context) {
super(context);
}
@@ -53,4 +62,40 @@ public class CustomizeBuildVersionPreferenceController extends AbstractPreferenc
mContext.getResources().getString(R.string.device_info_default)));
}
+ @Override
+ public boolean handlePreferenceTreeClick(Preference preference) {
+
+ if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+ return false;
+ }
+ if (Utils.isMonkeyRunning()) {
+ return false;
+ }
+
+ Log.e(TAG, "CustomizeBuildVersionPreferenceController handlePreferenceTreeClick: " );
+
+ if (mEngHitCountdown > 0) {
+ mEngHitCountdown--;
+ if (mEngHitCountdown == 0) {
+ launchFactoryTest();
+ mEngHitCountdown = 4;
+ }else {
+ Toast.makeText(mContext,
+ mContext.getResources().getQuantityString(
+ R.plurals.show_factory_countdown, mEngHitCountdown,
+ mEngHitCountdown),
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ return true;
+ }
+
+ }
+
}
这里的toast会要等显示完一个才会显示下一个,全局定义一个toast 改改就好
总结
Setting的模式,其实就是一个个perference组成的,然后又一个个的controller类
handlePreferenceTreeClick在每个controller类都有实现的