Android中如何修改系统时间(应用程序获得系统权限)在android的API中有提供 SystemClocksetCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied "这个函数需要root权限或者运行与系统进程中才可以用。本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:1 在应用程序的AndroidManifestxml中的manifest节点中加入android:sharedUserId="androiduidsystem"这个属性。2 修改Androidmk文件,加入LOCAL_CERTIFICATE := platform这一行3 使用mm命令来编译,生成的apk就有修改系统时间的权限了。第二个办法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:1 同上,加入android:sharedUserId="androiduidsystem"这个属性。2 使用eclipse编译出apk文件,但是这个apk文件是不能用的。3 用压缩软件打开apk文件,删掉META-INF目录下的CERTSF和CERTRSA两个文件。4 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是"build argetproductsecurity",下面的platformpk8和platformx509pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build oolssignapk"下,用法为"signapk platformx509pem platformpk8 inputapk outputapk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。这样最后得到的apk和第一个方法是一样的。最后解释一下原理,首先加入android:sharedUserId="androiduidsystem"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成androiduidsystem,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platformkey,就是上面第二个方法提到的platformpk8和platformx509pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到 platformpk8和platformx509pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android 中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package has no signatures that match those in shared user androiduidsystem",这样也是保护了系统的安全。最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。
先在manifest里面注册一个广播接受者
<receiver android:name="Receiver">
<intent-filter>
<action android:name="androidintentactionDATE_CHANGED"></action>
<action android:name="androidintentactionTIME_SET"></action>
</intent-filter>
</receiver>
然后在代码中实现你的逻辑:
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Logd("ok", "broadcast!");
}
}
您好,手机修改时间的方法如下(以小米手机为例):
1、点击手机中的“设置”图标,然后找到“更多设置”
2、点击设置后找到更多设置,点击进入后点击日期和时间
3、然后取消选中“自动确定日期和时间”,然后选择“设置时间”保存即可
以上就是关于Android如何获得系统(system)权限全部的内容,包括:Android如何获得系统(system)权限、请教大侠们,android 如何监听系统日期和时间的变化、安卓手机怎么修改系统时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)