android 开发者选项

news/2024/11/28 10:52:06/

默认User版本没有“开发者选项”,我们可以通过点击版本号7次来显示开发者模式,今天来看下代码中是如何处理的:

首先是

ackages/apps/Settings/src/com/android/settings/Settings.java的初始化处理:

布尔值showDev是否默认显示“开发者选项”:

 final boolean showDev = mDevelopmentPreferences.getBoolean(DevelopmentSettings.PREF_SHOW,android.os.Build.TYPE.equals("eng"));

如果想让开发者选项默认显示,不需要点击7次版本号,可直接将showDev置为true即可:
final boolean showDev = true; 

如果showDev为false,则在如下代码中隐藏“开发者选项”:

if (id == R.id.development_settings) {if (!showDev) {target.remove(i);}} 


下面看一下点击 版本号 显示开发者选项的部分:

代码路径:packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java

首先是定义点击次数:

static final int TAPS_TO_BE_A_DEVELOPER = 7;


点击版本号的处理逻辑,若mDevHitCountdown小于0,则表示”开发者选项“已经显示,参考Resume函数的处理:

if (preference.getKey().equals(KEY_BUILD_NUMBER)) {// Don't enable developer options for secondary users.if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true;if (mDevHitCountdown > 0) {if (mDevHitCountdown == 1) {if (super.ensurePinRestrictedPreference(preference)) {return true;}}mDevHitCountdown--;if (mDevHitCountdown == 0) {getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,Context.MODE_PRIVATE).edit().putBoolean(DevelopmentSettings.PREF_SHOW, true).apply();if (mDevHitToast != null) {mDevHitToast.cancel();}mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_on,Toast.LENGTH_LONG);mDevHitToast.show();} else if (mDevHitCountdown > 0&& mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER-2)) {if (mDevHitToast != null) {mDevHitToast.cancel();}mDevHitToast = Toast.makeText(getActivity(), getResources().getQuantityString(R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),Toast.LENGTH_SHORT);mDevHitToast.show();}} else if (mDevHitCountdown < 0) {if (mDevHitToast != null) {mDevHitToast.cancel();}mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_already,Toast.LENGTH_LONG); mDevHitToast.show();}} 

Resume 函数

@Overridepublic void onResume() {super.onResume();PreferenceGroup parentPreference = getPreferenceScreen();mDevHitCountdown = getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;mDevHitToast = null;}




http://www.ppmy.cn/news/734359.html

相关文章

手机开发者选项各项参数意义

停用HW叠加层&#xff0c;所有应用将共享视频内存&#xff0c;将不会经常检查碰撞与裁剪以显示一个合适的图像&#xff0c;将会耗费大量处理能力。而HW叠加层允许应用有单独的视频内存&#xff0c;性能自然要好些。 HW在这里的意思是硬件加速&#xff0c;叠加层的意思是指使用…

cmd可以用node但是vscode报错--node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

原因&#xff1a;环境变量配置错误 解决&#xff1a; a.如果不想配置环境变量&#xff0c;可用管理员方式运行vscode后&#xff0c;重启编译器&#xff1a; 若以上方法不行&#xff0c;需要老老实实配置环境变量&#xff1a; b.配置 系统环境变量&#xff08;S&#xff09; 即…

【Python爬虫与数据分析】UDP/TCP通信协议

目录 一、网络编程基础 二、UDP协议 三、TCP协议 一、网络编程基础 数据编码与解码 str -> bytes&#xff1a;encode编码&#xff0c;发送信息的时候用encode编码bytes -> str&#xff1a;decode解码&#xff0c;打印接收的信息用decode解码 test 你好世界en_code…

飞机可以连wifi 互联网+航空机会来了

对于坐飞机&#xff0c;相信很多人心中多少会觉得有些无聊&#xff0c;尤其是坐国际航班或者距离较远的国内航班。美国最新一项针对2000多名成年人的民调发现&#xff0c;93%的人承认他们在床上使用手机&#xff0c;近80%的人在上厕所及43%的人在红灯停车时使用手机。今天的人们…

ios13查找iphone_iOS 13如何节省iPhone的电池(通过不完全充电)

ios13查找iphone Kaspars Grinvalds/Shutterstock Kaspars Grinvalds / Shutterstock Lithium-ion batteries, like those in iPhones, have a longer usable life if you don’t charge above 80%. But, to last the day, you probably want a full charge. With iOS 13, Appl…

【渝粤教育】电大中专电商运营实操 (7)作业 题库

1.电子商务具有全球性特点&#xff0c;不受空间的限制&#xff0c;但受时间的限制。 &#xff08; &#xff09; A.错误 B.正确 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.电子商务最重要的是&#xff08; &#xff09; A.信息技术 B.商务 C.货物 D.网站…

2022年度保密教育线上培训考试参考答案

2022年度保密教育线上培训考试参考答案 公司要求学习保密知识并完成保密培训考试&#xff0c;花了一些时间做了几遍&#xff0c;分享一份满分答案&#xff0c;仅供参考&#xff1a; 单选题 1.涉密人员使用普通手机&#xff0c;正确的做法是&#xff08;&#xff09;。 A. 不在…

终点站,我来了!

前言 大家好&#xff0c;我是bigsai&#xff0c;最近一段时间没怎么发技术文&#xff0c;一方面是因为最近比较忙&#xff0c;参加的项目属于冲刺阶段&#xff0c;另一方面&#xff0c;个人比较独立的时间比较少&#xff0c;很少能干自己的东西&#xff0c;但是这个日子真的要结…