如何在Android上编程设置、手动修改最近完全充电时间及adb原理?
Android 修改最近完全充电时间戳相关问题解答
是否可通过系统调用手动修改?
可以,但必须拥有系统级权限或root权限——这个时间戳属于系统核心设置项,普通第三方应用无权限直接修改。系统级应用(带系统签名)或已root的设备,可通过系统提供的设置API手动调用修改。
编程方式设置时间戳
系统签名应用实现
如果你的应用是系统签名应用,可直接通过Settings类修改:
import android.provider.Settings; import android.content.ContentResolver; // 获取ContentResolver实例 ContentResolver resolver = getContentResolver(); // 设置时间戳(此处以当前时间为例,单位为毫秒) long timestamp = System.currentTimeMillis(); // 修改Global设置中的last_full_charge_time Settings.Global.putLong(resolver, Settings.Global.LAST_FULL_CHARGE_TIME, timestamp);
需要在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Root设备上的普通应用实现
如果设备已root,普通应用可通过执行su命令调用系统设置工具修改:
try { // 执行su命令,调用settings工具修改值 Process process = Runtime.getRuntime().exec("su"); OutputStream outputStream = process.getOutputStream(); long timestamp = System.currentTimeMillis(); String command = "settings put global last_full_charge_time " + timestamp + "\n"; outputStream.write(command.getBytes()); outputStream.flush(); outputStream.close(); process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); }
ADB命令修改方式
同样需要设备已root或开启adb root权限,执行以下命令:
- 先获取root权限的adb shell:
adb root
- 修改时间戳(替换
<timestamp>为目标毫秒级时间戳):
adb shell settings put global last_full_charge_time <timestamp>
注:部分Android版本中,该键可能存在于secure命名空间下,若上述命令无效,可尝试替换global为secure:
adb shell settings put secure last_full_charge_time <timestamp>
内容的提问来源于stack exchange,提问作者David Jonsson
相关产品推荐
相关产品推荐

