做服装行业网站,中山专业外贸网站建设,温州高端网站定制,网站建设1選宙斯站长软件平台#xff1a;Android11
硬件平台#xff1a;QCS6125 需求来源#xff1a;用户通过系统异常崩溃#xff0c;进入原生Settings页面#xff0c;通过默认的多击版本号方式打开开发者模式#xff0c;继而打开adb调试开关#xff0c;安装三方apk。 对付这种需求本来有…软件平台Android11
硬件平台QCS6125 需求来源用户通过系统异常崩溃进入原生Settings页面通过默认的多击版本号方式打开开发者模式继而打开adb调试开关安装三方apk。 对付这种需求本来有多种方案比如通过PKMS里边加一些签名或者包名校验防止三方apk后装之前的博客里有记录过该方法本篇只针对settings打开开发者模式的方式做复杂化处理因为这个入口如果完全屏蔽对开发者可能不太友好。 改动如下
diff --git a/src/com/android/settings/core/BasePreferenceController.java b/src/com/android/settings/core/BasePreferenceController.java
index c90fe48bc9..0e92930fcc 100644
--- a/src/com/android/settings/core/BasePreferenceController.javab/src/com/android/settings/core/BasePreferenceController.java-126,6 126,8 public abstract class BasePreferenceController extends AbstractPreferenceControlprivate UserHandle mWorkProfileUser;private int mMetricsCategory; public static boolean isCombinationKey false;
/*** Instantiate a controller as specified controller type and user-defined key.* p/
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index 185c8eaca7..db091b2b83 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.javab/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java-184,7 184,7 public class BuildNumberPreferenceController extends BasePreferenceController imR.plurals.show_dev_countdown, mDevHitCountdown,mDevHitCountdown),Toast.LENGTH_SHORT);
- mDevHitToast.show();//mDevHitToast.show();}mMetricsFeatureProvider.action(-199,7 199,7 public class BuildNumberPreferenceController extends BasePreferenceController im}mDevHitToast Toast.makeText(mContext, R.string.show_dev_already,Toast.LENGTH_LONG);
- mDevHitToast.show();//mDevHitToast.show();mMetricsFeatureProvider.action(mMetricsFeatureProvider.getAttribution(mActivity),MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED,-230,14 230,16 public class BuildNumberPreferenceController extends BasePreferenceController im* Enables development settings. Only call this after confirming password.*/private void enableDevelopmentSettings() {
- mDevHitCountdown 0;
- mProcessingLastDevHit false;
- DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(mContext, true);
- if (mDevHitToast ! null) {
- mDevHitToast.cancel();
- }
- mDevHitToast Toast.makeText(mContext, R.string.show_dev_on,if(isCombinationKey) {mDevHitCountdown 0;mProcessingLastDevHit false;DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(mContext, true);if (mDevHitToast ! null) {mDevHitToast.cancel();}mDevHitToast Toast.makeText(mContext, R.string.show_dev_on,Toast.LENGTH_LONG);
- mDevHitToast.show();//mDevHitToast.show();}}}
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
index caee987bd6..33478c3327 100755
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.javab/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java-19,6 19,7 package com.android.settings.deviceinfo.imei;import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA;import android.content.Context;
import android.os.Handler;import android.os.UserManager;import android.telephony.SubscriptionInfo;import android.telephony.SubscriptionManager;-46,6 47,7 public class ImeiInfoPreferenceController extends BasePreferenceController {private final TelephonyManager mTelephonyManager;private final ListPreference mPreferenceList new ArrayList();private Fragment mFragment;private int mDevCount 0;public ImeiInfoPreferenceController(Context context, String key) {super(context, key);-165,6 167,15 public class ImeiInfoPreferenceController extends BasePreferenceController {return true;} mDevCount;if (mDevCount 10) {isCombinationKey true;mDevCount 0;new Handler().postDelayed((Runnable) () - {isCombinationKey false;}, 30000);}
ImeiInfoDialogFragment.show(mFragment, simSlot, preference.getTitle().toString());return true;} 这个改动设置一个标志位在30s内点击相关栏10次才会设置30s后次数自动清零重新累计在该标志位设定后原有的开发者模式多击才会生效这里只是讲一个方法具体哪个栏目可以灵活控制。