今天想写一个 重启的压力测试,运行是出现下面问题:
一、运行报错java.lang.RuntimeException: Unable to start receiver runin.xtk.com.myreboot.BootBroadcastReceiver: java.lang.SecurityException: Neither user 10084 nor current process has android.permission.REBOOT.
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3197)
at android.app.ActivityThread.-wrap17(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1675)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6518)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
没有下面的权限Neither user 10084 nor current process has android.permission.REBOOT.
但是我已经给了权限 在文件
其中试了好几种重启的方法,还将手机 系统变为 userdebug 版本,都是一样的错
网上查资料说需要签名,需要修改两处:
1.Android.mk 文件添加如下:
LOCAL_CERTIFICATE := platform
2.AndroidManifest.xml 文件中将 manifest 添加 android:sharedUserId 属性
然后编译即可
以上编译即可解决问题
签名种类:
1、testkey:普通APK,默认情况下使用。
2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
3、shared:该APK需要和home/contacts进程共享数据。
4、media:该APK是media/download系统中的一环