设置系统时间-方法2

上一节,可以通过添加su的方式获取系统权限,但这种存在安全隐患,故不推荐,本文通过获取数字签名方式获取系统权限。

首先需要准备工作:

准备

工具

SignAPK.jar

此工具由Android源代码附带提供。signapk的源代码是$AndroidRoot/build/tools/signapk下,编译后在$AndroidRoot/out/host/linux-x86/framework下。

BSP厂商提供此工具。

此工具可以运行于Windows和Linux平台。当然需要操作系统中安装了Java运行时环境Java Runtime Environment (JRE)。

注意,不是源码,我们需要预编译的,有的在预编译下面,我的就在$AndroidRoot\prebuilts\sdk\tools\lib

解压缩工具

Zipalign

Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。(一般都有不需要安装)

http://developer.android.com/tools/help/zipalign.html

证书

签名apk使其具备system权限,需要使用两个文件platform.pk8和platform.x509.pem。这两个文件也是Android BSP厂商编译Android时候使用的证书文件。

文件由BSP厂商提供。(这个必须从源码里找,只有厂商才有)

文件路径为:$AndroidRoot/build/target/product/security/

这两个文件会被签名工具SignAPK读取使用。

java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 得到具有对应权限的APK

优化APK:
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk

感谢http://mysuperbaby.iteye.com/blog/1420612博主文章,至于怎么设置time

代码如下

  public static void setDate(int year, int month, int day) throws IOException, InterruptedException {

        Calendar c = Calendar.getInstance();

        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, day);
        long when = c.getTimeInMillis();

        if (when / 1000 < Integer.MAX_VALUE) {
            SystemClock.setCurrentTimeMillis(when);
        }

        long now = Calendar.getInstance().getTimeInMillis();
        //Log.d(TAG, "set tm="+when + ", now tm="+now);

        if(now - when > 1000)
            throw new IOException("failed to set Date.");
    }
public static void setTime(int hour, int minute) throws IOException, InterruptedException {

Calendar c = Calendar.getInstance();

c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
long when = c.getTimeInMillis();

if (when / 1000 < Integer.MAX_VALUE) {
SystemClock.setCurrentTimeMillis(when);
}

long now = Calendar.getInstance().getTimeInMillis();
//Log.d(TAG, "set tm="+when + ", now tm="+now);

if(now - when > 1000)
throw new IOException("failed to set Time.");
}

该代码参考了http://blog.csdn.net/aikongmeng/article/details/26730737博主文章,但有所修改。

谢谢!

时间: 2024-10-05 22:23:43

设置系统时间-方法2的相关文章

linux中显示/设置系统时间

date   显示/设置 系统时间 +某个格式 以某种格式显示日期 格式: +%F  2017-08-20  ====== +%Y-%m-%d +%w 显示周几  0 周日  1-6 周一到周六 +%T  时:分:秒     ====== +%H:%M:%S -d  按照你的描述显示日期 -d "1day"    1天之后  ==== +1day -d "-1day"   1天之前 -s修改系统的时间 1.1 修改系统时间的命令 ntpdatepool.ntp.or

Qt linux下设置系统时间

想要能修改 ARM板上的系统时间,试了两种方法: 1.采用系统命令.system() 尝试了很多命令,date -s "20090807 16:02:23" :date -s 16:02:23 :但板子上的日期就是设置不成功,采用date -s 16:02:23 可以将时间设置成功.于是不得不考虑别的方法. 2.标准C库 首先感叹下,C库很强大呀! 而且我觉着C库的移植行很好.相比较采用system()命令,可能由于linux 版本的不同,好多命令可能存在差异,比如redhat 和ub

Qt设置系统时间(使用SetSystemTime API函数)

大家都知道Qt中有QDateTime等有关时间与日期的类,类中包含很多成员函数,可以很方便的实现有关时间与日期的操作,比如:想要获得系统当前的时间与日期,可以调用currentDateTime(); 但是Qt并没有提供设置系统时间的方法,这样我们只能自己来区分平台,调用平台相关的API,这篇文章实现在Windows下的设置. 常用的与时间有关的Win32 API有两个:GetSystemTime();  与  SetSystemTime();  下面是函数原型: VOID GetSystemTi

centos7设置系统时间与网络时间同步

Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC). 系统时间:指当前Linux Kernel中的时间. 硬件时间:主板上有电池供电的时间. 查看系统时间的命令: #date 设置系统时间的命令: #date –set(月/日/年 时:分:秒) 例:#date –set "10/11/10 10:15" 查看硬件时间的命令: # hwclock 设置硬件时间的命令: # hwclock –set –date = (月/日/

【Python】Python 使用http时间同步设置系统时间源码

Python方式实现使用http时间同步设置系统时间源码,系统环境是ubuntu 12.04.Python2.7版本.需要使用到time.os及httplib方法. Python使用http时间同步设置系统时间,源码如下: `#-*-coding:utf8 -*-` `import` `httplib as client` `import` `time` `import` `os` `def` `get_webservertime(host):` `conn``=``client.HTTPCon

linux date 设置系统时间

设置 系统时间 注意时间格式 date  -s "date" [[email protected] c]# date -s "2019-05-29 10:58:00"    //设置时候,尽量比当前时间快1分钟 e.g: part1: linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间, 另一个是系统时钟,是linux系统Kernel时间. 当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于

linux设置系统时间

设置系统时间 -         date命令:显示系统的时间,能够在直接输入"date"命令来查看系统的时间 -           date+%y/%m/%d -           2005/06/23 -           date +%H:%M -           17:25 -         利用date命令来更改系统的时间 -           dateMMDDHHMMCCYY.SS:月月日日时时分分年年.秒秒 -         查看月历 -         

QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)

QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 [cpp] view plain copy void moreidDialog::refresh_time() { QDateTime time; txt_time->setText(time.currentDateTime().toString("yyyy") + ".&

Linux 设置系统时间和日期 API

嵌入式Linux 设置时间和日期 API ,它是busybox要提取的源代码. Linux设置时间和日期的步骤: 1. 设置系统时间和日期: 2. 该系统的时间和日期,同步到硬件. #include <stdio.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <time.h> #inc