Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, hourOfDay); c.set(Calendar.MINUTE, minute); long when = c.getTimeInMillis(); if (when / 1000 < Integer.MAX_VALUE) { SystemClock.setCurrentTimeMillis(when); }
设置android系统时间,但是需要root权限,解决方法:
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:
1. 同上,加入android:sharedUserId="android.uid.system"这个属性。
2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
这样最后得到的apk和第一个方法是一样的。
最后解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。
只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。
这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8和platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package ... has no signatures that match those in shared user android.uid.system",这样也是保护了系统的安全。
最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。
相关推荐
首先,Android系统时间的修改需要`WRITE_SETTINGS`权限。在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.WRITE_SETTINGS" /> ``` 自Android 6.0(API级别...
在Android系统中,这些权限是严格控制的,一般的应用程序无法直接获取。但通过特定的技术手段,开发者可以尝试在未root的设备上实现这些功能。本文将详细介绍如何在Android应用中获取系统权限并修改系统时间。 首先...
在 Android 平台上,修改系统时间和日期的功能通常受到严格的限制,以防止恶意应用程序篡改系统时间。然而,在某些特定的应用场景下(例如时区调整工具或特殊调试应用),开发者可能需要实现这一功能。本文将基于...
在Android系统中,修改系统时间通常涉及到安全性和应用程序的正确运行。系统时间是操作系统的核心组件之一,用于跟踪日期和时间,对于同步、日志记录和其他关键功能至关重要。下面将详细介绍两种在Android中修改系统...
本文将深入探讨安卓Android系统日历日程的操作,基于提供的"安卓Android源码——安卓Android系统日历日程操作.rar"资源,我们将分析如何在Android应用程序中实现对日历的增删改查功能。 首先,Android提供了`...
Android系统时间分为两种:系统时间和RTC(Real-Time Clock)时间。系统时间是Android应用看到的时间,它可以在设备开机或休眠状态下被改变。RTC时间则存储在硬件RTC芯片中,通常在设备关机后仍能保持。在大多数情况...
public static final String SCREEN_OFF_TIMEOUT = screen_off_timeout; private final int SCREEN_TIMEOUT_VALUE_NONE = Integer.MAX_VALUE;//永不休眠 private DreamBackend mBackend;//屏保管理类 ...
这个"安卓9.0系统自带settings系统设置apk源码"提供了深入理解Android系统设置实现的绝佳机会。Android 9.0,也被称为Pie(馅饼),是Android操作系统的一个重大更新,引入了许多新功能和性能改进。下面将详细介绍这...
下面我们将深入探讨Android系统时间同步服务的工作原理及相关知识点。 首先,Android系统中的时间同步主要通过`SystemServer`进程中的`SystemTimeService`类来实现。这个服务与网络时间服务器进行交互,通常使用NTP...
例如,`date -s "2022-01-01 00:00:00"`会将时间设置为2022年1月1日的零点。 - `hwclock -w`:此命令将系统RTC(实时时钟)设置为当前时间,确保重启后时间仍然正确。 4. **编程实现**:如果你正在开发一个应用...
Android修改系统时间(应用程序获得系统权限)!!!对你有所帮助
在Android系统中,设置时间和日期是一项基本操作,对于开发者来说,有时需要在应用程序中实现这一功能,例如在创建日志、记录事件或者依赖特定时间触发某些功能时。本篇文章将详细讲解如何在Android中通过代码来设置...
在Android平台上,获取网络时间并校准系统时间是一项常见的任务,尤其对于那些需要精确时间同步的应用来说至关重要。本文将深入探讨如何实现这一功能,并提供相关的编程知识点。 首先,要获取网络时间,通常我们会...
首先,我们来了解Android系统时间的类型: 1. **系统时间**:这是手机显示的时间,分为自动和手动两种模式。自动模式下,系统会通过网络服务(如GPS、移动网络或Wi-Fi)获取准确的全球标准时间。手动模式则允许用户...
服务器也可以用Eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用...
总结,修改Android系统时间需要在Manifest中声明`CHANGE_SYSTEM_TIME`权限,并可能需要在运行时动态请求。在API 26以上,系统对此有更严格的限制。同时,了解和正确使用签名工具对发布应用至关重要。在实际开发中,...
Android系统移植与平台开发涉及到多个方面,包含对Android系统本身的下载、编译、移植过程,以及对开发人员如何针对特定硬件平台进行开发的指导。本篇文档的内容详细描述了Android系统移植与平台开发的前期准备、...
1. **系统时间同步**:Android系统以往已有与网络时间服务器同步时间的功能,如NTP(Network Time Protocol)。但在Android 9.0中,可能进一步强化了这一功能,提供了更便捷的API接口,允许应用程序或系统服务直接...
总结来说,获取Android系统时间的小时制主要涉及`android.text.format.Time`类的`is24HourFormat()`方法,以及根据系统时间格式进行日期格式化的操作。同时,可以通过`BroadcastReceiver`监听时间格式变化,以实现...
你可以读取这个文件并解析它的内容来获取CPU的用户时间(usertime)和系统时间(systemtime)。以下是一个简单的例子: ```c++ #include #include std::string readProcStat() { std::ifstream file("/proc...