如何使Android应用程序获取系统权限 来修改系统时间

db1.insert("date", null, values1);//把values1内容加入数据库

在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用。 本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。 个方法简单点,不过需要在Android系统源码的环境下用make来编译: 1. 在应用程序的AndroidManifest.xml中的manifest中加入 "android:sharedUserId="android.uid."这个属性。 2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行 3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。 第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译: 1. 同上,加入"android:sharedUserId="android.uid."这个属性。 2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。 3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。 4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦, 首先找到密钥文件,在我的Android源码目录中的位置是"build argetproductsecurity",下面的platform.pk8和platform.x509.pem两个文件。 然后用Android提供的Signapk工具来签名,signapk的源代码是在"build oolssignapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",文件名使用路径防止找不到,也可以修改源代码直接使用。这样得到的apk和个方法是一样的。 解释一下原理,首先加入android:sharedUserId="android.uid."这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。 只是加入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.",这样也是保护了系统的安全。

android 获取系统时间 android获取当前日期android 获取系统时间 android获取当前日期


android 获取系统时间 android获取当前日期


- 低级别的系统调试Log信息

安卓手机怎么修改系统时间

个方法简单点,不过需要在Android系统源码的环境下用make来编译:

若使用的是vivo手机,进入设置--系统管理/更多设置--日期与时间中可修改手机时间。(修改前需将“自动设置”关闭)。

命令行

首先我想到的是手机root,然后命令行

date -s 要设置的时间1

关于如何调用命令行,请点击:安卓程序中调用 linux 命令

如果手机没 root 怎么破呢,继续往下看吧。

如何使Android应用程序获取系统权限来修改系统时间

这里说明一点,由于在manifest文件加入android:sharedUserId=”android.uid.”这个属性,导致 Android Studio 等工具,直接编译运行会出现此提示窗:

获取了权限了,一行代码就可以设置时间:

SystemClock.setCurrentTimeMillis(millTime);

在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用。

android:sharedUserId="android.uid."这个属性。

2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行

3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。

第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:

1. 同上,加入android:sharedUserId="android.uid."这个属性。

2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。

3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。

4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,

是"buildtargetproductsecurity",下面的platform.pk8和platform.x509.pem

两个文件。

然后用Android提供的Signapk工具来签名,signapk的源代码是

在"buildtoolssignapk"下,

用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",

文件名使用路径防止找不到,也可以修改源代码直接使用。

这样得到的apk和个方法是一样的。

解释一下原理,首先加入android:sharedUserId="android.uid."这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。

只是加入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.",这样也是保护了系统的安全。

最还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。

1、关闭自动设置,就可以手动修改系统时间;

2、进入手机设置,找到通用

3、进入通用,找到日期与时间

4、进入日期与时间,找到自动设置,关闭自动与设置开关,然后可以手动滑动日期和时间来修改

你好.不知道你手机的系统是什么?我用原生安卓系统的修改方法来回答吧:

在桌面点击设置.打开设置后一直往下拉.你会在界面看到日期和时间.点击进去后.如果想自定义修改时间.则需要把“自动确定日期和时间”前面的勾去掉.然后在“设置日期”和“设置时间”自己修改即可完成修改时间

Linux怎样修改系统时间

修改linux的时间可以使用date指令

修改日期:

时间设定成2009年5月10日的命令如下:

#date -s 05/10/2009

修改时间:

将系统时间设定成上午10点18分0秒的命令如下。

#date -s 10:18:00

修改时区:

找到相应的时区文件 /usr/share/zone/Asia/Shanghai替换当前的/etc/localtime。

修改/etc/sysconfig/clock文件的内容为:

ZONE=”Asia/Shanghai”

UTC=false

ARC=false

同步bios时间:

同步BIOS时钟,强制把系统时间写入CMOS,命令如下:

#clock -w

date命令的功能是显示和设置系统日期和时间。

输入date 查看目前系统时间。

修改时间需要 date -功能字符 修改内容

命令中各选项的含义分别为:

-d datestr, --date datestr 显示由datestr描述的日期

-s datestr, --set datestr 设置datestr 描述的日期

-u, --universal 显示或设置通用时间

时间域

%H 小时(00..23)

%I 小时(01..12)

%k 小时(0..23)

%l 小时(1..12)

%M 分(00..59)

%p 显示出AM或PM

%r 时间(hh:mm:ss AM或PM),12小时

%s 从1970年1月1日00:00:00到目前经历的秒数

%S 秒(00..59)

%T 时间(24小时制)(hh:mm:ss)

%X 显示时间的格式(%H:%M:%S)

%Z 时区 日期域

%a 星期几的简称( Sun..Sat)

%B 月的全称(January..December)

%c 日期和时间( Mon Nov 8 14:12:46 CST 1999)

%d 一个月的第几天(01..31)

%D 日期(mm/dd/yy)

%h 和%b选项相同

%m 月(01..12)

%w 一个星期的第几天(0代表星期天)

%W 一年的第几个星期(00..53,星期一为天)

%x 显示日期的格式(mm/dd/yy)

%Y 年(例如:1970,1996等)

需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

例1:用指定的格式显示时间。

$ date '+This date now is =>%x ,time is now =>%X ,thank you !'

This date now is =>11/12/99 ,time is now =>17:53:01,thank you !

例2:用预定的格式显示vivo手机可进入设置--系统管理/更多设置--日期与时间,可打开自动设置,联网后会自动对时。也可以关闭自动设置,设置时间,手动输入时间和日期。当前的时间。

# date

Fri Nov 26 15:20:18 CST 1999

例3:设置时间为下午14点36分。

# date -s 14:36:00

Fri Nov 26 14:15:00 CST 1999

例4:设置时间为1999年11月28号。

# date -s 28

Sun Nov 28 00:00:00 CST 1999

实例:设置时间伟2008年8月8号12:00

修改完后,记得输入:clock -w

把系统时间写入CMOS

点你手机的设置键或设置单,里面就有时间日期设置 安卓机不全都一样的。

设置——日期和时间设置——勾掉自动——设置时间

下个手机管家 可以自动校时

android adb命令修改系统时间

本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。

修改前提:获取系统root权限,然后adb shell进入shell界面。

在adb shell中试图使用 date -s "yyyymmdd.[[[hh]mm]ss]"修改系统系统时间时,会提示 date: Unknown option s。

adb的全称为Android Debug Bridge.是android用户经常用到的工具,adb shell下的am与pm,am和pm命令必须先切换到adb shell模式下才能使用。

am全称activity mar,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。

扩展资料:

注意事项:

2、查看ADB帮助:adb

3、查看log:adb logcat

4、终止adb服务进程:a使用DatePickerDialogTimePickerDialog来实现修改系统时间,系统时间不是那么好修改的,涉及到修改应用程序权限的问题,必须使应用程序有系统的签名才可以修改系统时间,这里附上作步骤:db kill-server

5、重启adb服务进程:adb start-server

6、显示系统中全部android平台:android list targets、

参考资料来源:

参考资料来源:

手机时间在哪更改

多次点击 ok 无效,因为设置了系统属性,所以,下次你运行别的项目,出现此情况时,可以检查下时候添加了该属性的,有的话,去掉,再编译运行就可以的。

所有手机更改日期大致相同,这里以三星手机为例说明:

Android框架则是通过Logger驱动打印log信息,这些log并没有归并到kmesg文件中,而是单独存储的,位于/dev/log目录下,在Shell终端可以通过logcat命令来查看。

1. 在手机桌面中点击打开“设定”,要进入“设定”中,才能对日期和时间做出调整的。

2. 点击打开“设定”之后,在“设定”下找到“日期和时间”。找到“日期和时间”以后,点击打开。

3. 点击打开“日期和时间”以后,在“日期和时间”下找到“设置日期”。找到之后,点击打开。

5. 日期调整以后,点击下方的“设定”。这样,日期的设置就算完成了

1、打开手机,点击进入“设置”。

2、在“设置”界面,点击“全部设置”,然后找到“安全”选项,并点击进入。

3、在“安全”界面,找到“直接显示密码锁屏界面”。当“直接显示密码锁屏界面”处于关闭状态时,锁屏时间位置在屏幕下方,当开启时,锁屏时间位置则位于屏幕中间。

以华为mate20手机为例,华为手机时区设置办法如下:

1、在华为mate20手机桌面上打开“设置”,然后单击“高级设置”。

2、打开华为mate20手机“时间和日期”。

4、可以根据自己的需要更改华为mate20手机时区了。

扩展华为Mate20手机很不错,参数如下:

1、屏幕:屏幕尺寸是6.53英寸,屏幕色彩为1670万色,分辨率FHD+ 1080 x 2244 像素,屏幕清晰,玩游戏、看视频更爽。

2、摄像头:后置徕卡三摄1200万像素(广角,f/1.8光圈)+1600万像素(超广角,f/2.2光圈)+800万像素(长焦,f/2.4光圈),支持自动对焦(激光对焦/相位对焦/反对焦),支持AIS防抖。前置摄像2400万像素,f/2.0光圈,支持固定焦距,更加细腻。

3、性能:华为Mate 20手机采用EMUI 9.0(基于Android 9)作系统,搭载麒麟980+八核处理器,多应用同时运行无压力,游戏运行更流畅。

4、电池:电池容量4000mAh(典型值),手机支持4.5V/5A或5V/4.5A超级快充,兼容9V/2A快充,理论充电时间约1.5小时,持久续航。

以华为P30 Pro手机为例:

可以根据需要,手动调整日期、时间、时区。

进入设置 > 系统和更新 > 日期和时间,按需设置。

1.自动获取或手动设置日期和时间

(1)开启自动设置开关,手机将与当前网络上的时间同步。

(2)或关闭自动设置开关手动调整日期和时间。

2.设置 12 小时制或 24 小时制

(1)开启24小时制开关,时间将以 24 小时格式显示。

(2)关闭24小时制开关,时间将以 12 小时格式显示。

3.修改时区

(1)开启自动设置开关,手机将与当前网络上的时区同步。

(2)关闭自动设置开关您可以手动修改时区。

android系统如何通过$ adb 来获得/data/data目录的访问权限

<6> [ 6.613861] Freeing init memory: 176K

首先需要将你SDK下的adb.exe的路径加入到电脑的PATH环境变量中,然后adb shell 回车 cd data/data 就好了

开启自动设置开关,手机将与当前网络上的时间同步。

adb shell

chmod 777 -R /data/data

Android系统原理及开发要点详解的前 言

获取系统权限修改

Android 是Google历经数年和投资数亿美元开发出来的智能手机系统,Google也发起了围绕Android的组织——开放手机联盟,其英文全1、查看adb版本:adb version称为“Open Handset Alliance”。

手机时间怎么设置?

OPPO手机时间显示的设置方法:

vivo手机进入设置--系统管理/更多设置--日期与时间,可打开自动设置,联网后会自动对时。也可以关闭自动设置,设置时间,手动输入时间和日期。

那么,如何找到Android系统启动完成的标志呢?

所有手机均具有联网获取世界标准时(含时间)的功能。同时手机在设置页面下,还具有手动调整世界时区、日期及小时、分钟和秒的设置。如果个人不明白,可以到当地手机专卖店或手机售后服务窗口进行咨询和了解。

苹果 打开设置 上滑到最上面有个搜索 搜索上面输入时间 就会看到一个日期与时间 里面点击进去就可以设置了

android得到系统时间如何判断是白天还是晚上

3、关闭华为mate20手机“自动确定日期和时间”和“自动确定时区”以修改时间和时区。

需要得到时间是白天还是晚上分别处理。但是得到的系统时间是十二小时制的,没有显示出白天还是晚上。即使我把手机改成二十四小时制的得到的时间也是十二小时制的。就像白天七点和晚上七点是分不出来的。而且还有一个问题就是,万一用户用的是十二小时制的话,那我也没法判断。大家帮帮忙有什么好的办法能判断是白天还是晚上。先谢谢大家了。 ------解决方案--------------------------------------------------------这东西通过客户端来判断有些困难吧 ,客户端时间可以随意更改的 ------解决方案--------------------------------------------------------可以判断的,12小时制的时间里面的AM、PM分别代表上午、下午 ContentResolver cv = getBaseContext().getContentResolver(); String strTimeFormat = android.provider.Settings.System.getString(cv, android.provider.Settings.System.TIME_12_24); if(strTimeFormat!=null && strTimeFormat.equals("24")){Log.i("Debug","24小时制");}else{String amPmValues; Calendar c = Calendar.getInstance();你不需要理会用户的时间是12小时还是24小时,只要时间是正确的就行,

1. 在应用程序的AndroidManifest.xml中的manifest中加入

android开发过程中怎样通过代码设置系统时间,求详细解答。从步到实现????

%y 年的两个数字( 199# date -s "2008-08-08 12:00:00"9则是99)

高通平台android怎么过去开机时间

(1) Android是基于Linux内核的系统,因此Android的启动过程是分为两个阶段的:

第二个阶段就是Android框架的启动(包括核心服务和程序)。

(2)Android的log系统是于Linux内核的log系统的。

Linux内核通过prin开启自动设置开关,手机将与当前网络上的时间同步。tk打印的log信息,这些log写入到了/dev/kmsg文件中,在Shell终端可以通过dmesg命令查看这些log信息。

下面我们分别从两种log信息中找到如何统计系统启动时间的方法。

1. 通过dmesg信息统计Linux内核启动时间

首先,我们通过dmesg命令抓取Linux内核的log信息(部分系统可能需要先执行 adb root):

$ adb shell dmesg > dmesg.txt

Linux内核启动完成,一般都有如下的标准输出信息:

因此,只要我们在dmesg.txt文件中找到“Freeing init memory”这一行即可,从上面的log可以看出,Linux内核启动只用了6.613861s。

很多An%A 星期几的全称( Sunday..Saturday)droid设备在系统启动完成后,会在内核log中打印如下信息:

<6>[ 29.3726] init: processing action 0x96bb8 (property:sys.boot_completed=1)

因此,找到“boot_completed”这一行也就得到了整个系统的启动时间了,从这一行可以看出,整个系统启动用了29.3726s。

当然,并不是所有的Android设备都会打印出这条log,因此,我们一般用下面介绍的方法来专门统计Android系统的启动时间,

2. 通过logcat统计Android Logger启动时间

文章开头我们已经介绍过,Android的log系统是于Linux内核log系统的,通过在终端输入adb shell 进入Android系统,cd到/dev/log目录,你会发现里面有四个文件,分别是:nts,main,radio,.

Android系统把Log分为了四类,不同的类别记录不同的Log信息:

main - 主要的Log信息,大部分应用级别的Log信息都在这里

nts - 系统相关的Log信息

radio - /电话相关的Log信息

默认通过logcat抓取的是main信息,如果想抓取指定类别的log信息的方法,在logcat命令后加-b参数,例如:

1234

$ adb logcat -d -v time -b "main" > main.txt$ adb logcat -d -v time -b "nts" > nts.txt$ adb logcat -d -v time -b "" > .txt$ adb logcat -d -v time -b "radio" > radio.txt

关于Android Log系统的分类,你可以访问如下页面详细了解: 《Android Logging System》

那么,如何统计Android系统的启动时间呢?

我们可以重点关注nts类别的log信息,通过如下命令:

$ adb logcat -v time -d -b nts | grep "boot"

如图所示,这是我在高通的APQ8064开发板上抓取的log信息:

“boot_progress_start”代表着Android屏幕点亮,开始显示启动动画,即15.492s开始闪烁Android字样。

“boot_progress_enable_screen”代表着整个系统启动结束,即用了29.986s,用这个总时间减去Linux Kernel的启动时间即可得到Android OS部分的时间。

3. 小结

由于本文重点关注如何统计Android系统的启动时间,因此,很多启动log文件的分析就不做详细展开了,下一篇文章将会对系统启动的log做稍微详细的分析。有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail交流,或者关注我的新浪微博 @卢_俊 获取的文章和资讯。