美文网首页
Android更新设备时间

Android更新设备时间

作者: 见字如晤一 | 来源:发表于2022-06-14 10:59 被阅读0次

    开发安卓系统真的是太有趣了,由于公司设备运行环境是局域网,无法连接外网。导致设备通过手动修改设备时间非常不可控,于是在网上找了方法去更新设备时间,但是发现网上提供的方法是需要shearUsid作为系统签名用户才能实现。

    如:
    Android 设置系统日期时间和时区

    跟着讲解,我一顿操作猛如虎,一运行打包安装,gg了,安装不了,报错:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE,意思是需要系统签名。很明显这种方式行不通。

    于是求助于同事,公司设备本身存在定制化,但是上述这个方式也太“系统化”了。在同事的帮助下得知还有SDK能力,其实应该也是利用反射的方式,不过我这里用的是直接shell操作。

    Android : 反射机制获取或设置系统属性(SystemProperties) 这种方式供参考。

    我的方式:

     /**
         * 获取服务器时间
         */
        private void getServerTime() {
            HttpSend.getInstance().getServerTime(new ResultCallbackListener<String>() {
                @Override
                public void onSuccess(String data) {
                    ELog.e("服务器时间:" + data + "-->" + DateUtils.getDateTimeStr(Long.parseLong(data)));
                    if (!TextUtils.isEmpty(data)) {
                        MyApp.deviceControlStrategy.updateSystemDateTime(data);
                    }
                }
            });
        }
    
    
    /**
         * 修改系统时间
         *
         * @param date
         */
        @Override
        public void updateSystemDateTime(String date) {
            //测试设置系统时间
            String formatSystemTime = DateUtils.getFormatSystemTime(Long.parseLong(date));
            ELog.e("formatSystemTime = " + formatSystemTime);
            ShellUtils.execCommand("date " + formatSystemTime + " set" + "\n busybox hwclock -w\n", true);
            //设置完成之后,麻烦发送心跳,不然设备会无限重启
            EventBus.getDefault().post(new WatchDogEvent("发送消息了"));
        }
    

    自测能实现!至于工具类大同小异,这里就不说明了。如有需要可以给我留言。

    相关文章

      网友评论

          本文标题:Android更新设备时间

          本文链接:https://www.haomeiwen.com/subject/ljqzmrtx.html