You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无网络的已Root Android 4.2设备上通过代码设置时间日期

解决已Root Android 4.2设备无网时自定义设置日期时间的方案

因为设备已Root且无网络,直接通过系统API设置时间会受限,所以采用执行Root Shell命令的方式实现,可在应用启动阶段完成设置。

核心思路

利用Android系统内置的date命令(Android 4.2支持该命令),通过Root权限执行命令修改系统时间,同时通知系统时间已更新。

具体实现步骤

1. 编写Root命令执行工具类

先封装一个执行Root命令的工具方法,确保能获取Root权限并执行命令:

public class RootCommandUtil {
    public static boolean executeRootCommand(String command) {
        Process process = null;
        DataOutputStream os = null;
        try {
            // 启动Root权限的Shell进程
            process = Runtime.getRuntime().exec("su");
            os = new DataOutputStream(process.getOutputStream());
            // 写入命令并执行
            os.writeBytes(command + "\n");
            os.writeBytes("exit\n");
            os.flush();
            // 等待命令执行完成,返回0表示成功
            return process.waitFor() == 0;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                if (os != null) os.close();
                if (process != null) process.destroy();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

2. 构造时间设置命令

Android的date命令格式为:date MMDDhhmm[[CC]YY][.ss],各参数含义:

  • MM:月份(01-12)
  • DD:日期(01-31)
  • hh:小时(00-23)
  • mm:分钟(00-59)
  • YY/CCYY:年份(可写后两位或四位)
  • ss:秒数(可选,默认00)

示例:设置2024年5月20日14点30分00秒,命令为:

date 052014302024.00

3. 在应用启动前执行设置

可以在自定义Application的onCreate方法中执行,确保业务代码启动前完成时间设置:

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 自定义目标时间,这里可以替换为固定时间或从本地存储读取
        String setTimeCommand = "date 052014302024.00";
        boolean isSuccess = RootCommandUtil.executeRootCommand(setTimeCommand);
        if (isSuccess) {
            // 通知系统时间已更改,更新系统时间显示
            sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
        }
    }
}

记得在AndroidManifest.xml中注册自定义Application:

<application
    android:name=".MyApp"
    ...>
    ...
</application>

注意事项

  • 确保设备已获取Root权限,且应用请求Root权限时用户已授权。
  • 时间参数必须严格按照格式填写,否则命令执行失败。
  • 若需要动态设置时间(比如从本地配置文件读取),可提前解析配置生成对应格式的命令字符串。
  • Android 4.2中部分设备可能需要额外执行setprop persist.sys.timezone GMT+8(根据时区调整)来设置时区,可按需添加到命令中。

内容的提问来源于stack exchange,提问作者Android_junior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:32:46