`
zhtch_123
  • 浏览: 83314 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

设置android系统时间

阅读更多
 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设置系统时间 源代码 步骤说明

    首先,Android系统时间的修改需要`WRITE_SETTINGS`权限。在AndroidManifest.xml文件中添加以下权限: ```xml &lt;uses-permission android:name="android.permission.WRITE_SETTINGS" /&gt; ``` 自Android 6.0(API级别...

    Android应用获取系统权限,修改系统时间

    在Android系统中,这些权限是严格控制的,一般的应用程序无法直接获取。但通过特定的技术手段,开发者可以尝试在未root的设备上实现这些功能。本文将详细介绍如何在Android应用中获取系统权限并修改系统时间。 首先...

    android系统修改系统时间和日期源码

    在 Android 平台上,修改系统时间和日期的功能通常受到严格的限制,以防止恶意应用程序篡改系统时间。然而,在某些特定的应用场景下(例如时区调整工具或特殊调试应用),开发者可能需要实现这一功能。本文将基于...

    安卓Android源码——安卓Android系统日历日程操作.rar

    本文将深入探讨安卓Android系统日历日程的操作,基于提供的"安卓Android源码——安卓Android系统日历日程操作.rar"资源,我们将分析如何在Android应用程序中实现对日历的增删改查功能。 首先,Android提供了`...

    Android中如何修改系统时间(两种方法)

    在Android系统中,修改系统时间通常涉及到安全性和应用程序的正确运行。系统时间是操作系统的核心组件之一,用于跟踪日期和时间,对于同步、日志记录和其他关键功能至关重要。下面将详细介绍两种在Android中修改系统...

    Android修改系统时间

    Android系统时间分为两种:系统时间和RTC(Real-Time Clock)时间。系统时间是Android应用看到的时间,它可以在设备开机或休眠状态下被改变。RTC时间则存储在硬件RTC芯片中,通常在设备关机后仍能保持。在大多数情况...

    android设置系统锁屏时间或屏保显示时间

    public static final String SCREEN_OFF_TIMEOUT = screen_off_timeout; private final int SCREEN_TIMEOUT_VALUE_NONE = Integer.MAX_VALUE;//永不休眠 private DreamBackend mBackend;//屏保管理类 ...

    Android系统时间同步服务

    下面我们将深入探讨Android系统时间同步服务的工作原理及相关知识点。 首先,Android系统中的时间同步主要通过`SystemServer`进程中的`SystemTimeService`类来实现。这个服务与网络时间服务器进行交互,通常使用NTP...

    修改Android系统日期

    例如,`date -s "2022-01-01 00:00:00"`会将时间设置为2022年1月1日的零点。 - `hwclock -w`:此命令将系统RTC(实时时钟)设置为当前时间,确保重启后时间仍然正确。 4. **编程实现**:如果你正在开发一个应用...

    安卓9.0系统自带settings系统设置apk源码

    这个"安卓9.0系统自带settings系统设置apk源码"提供了深入理解Android系统设置实现的绝佳机会。Android 9.0,也被称为Pie(馅饼),是Android操作系统的一个重大更新,引入了许多新功能和性能改进。下面将详细介绍这...

    android修改系统时间

    Android修改系统时间(应用程序获得系统权限)!!!对你有所帮助

    android设置时间和日期

    在Android系统中,设置时间和日期是一项基本操作,对于开发者来说,有时需要在应用程序中实现这一功能,例如在创建日志、记录事件或者依赖特定时间触发某些功能时。本篇文章将详细讲解如何在Android中通过代码来设置...

    安卓Android源码——安卓Android系统日历日程操作.zip

    在安卓Android系统中,日历和日程管理是用户日常使用的重要功能之一。这份压缩包文件"安卓Android源码——安卓Android系统日历日程操作.zip"包含了与Android日历API相关的源代码,用于理解如何在Android应用中进行...

    android通过访问网络获取网络时间,并修改系统时间

    在Android平台上,获取网络时间并校准系统时间是一项常见的任务,尤其对于那些需要精确时间同步的应用来说至关重要。本文将深入探讨如何实现这一功能,并提供相关的编程知识点。 首先,要获取网络时间,通常我们会...

    android修改系统时间(附详细使用说明)

    首先,我们来了解Android系统时间的类型: 1. **系统时间**:这是手机显示的时间,分为自动和手动两种模式。自动模式下,系统会通过网络服务(如GPS、移动网络或Wi-Fi)获取准确的全球标准时间。手动模式则允许用户...

    安卓Android新闻发布系统app

    服务器也可以用Eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用...

    安卓获取系统时间和网络时间

    用户可以在设置中手动调整系统时间,或者当设备连接到互联网时,某些应用可能会尝试自动校准它。 2. **网络时间**:网络时间通常指的是通过网络协议(如NTP - 网络时间协议)从互联网上的时间服务器获取的时间,它...

    Android 9.0增加系统同步时间戳接口,同步本机时间

    1. **系统时间同步**:Android系统以往已有与网络时间服务器同步时间的功能,如NTP(Network Time Protocol)。但在Android 9.0中,可能进一步强化了这一功能,提供了更便捷的API接口,允许应用程序或系统服务直接...

    获取Android系统时间的小时制

    总结来说,获取Android系统时间的小时制主要涉及`android.text.format.Time`类的`is24HourFormat()`方法,以及根据系统时间格式进行日期格式化的操作。同时,可以通过`BroadcastReceiver`监听时间格式变化,以实现...

Global site tag (gtag.js) - Google Analytics