今天想写一个 重启的压力测试,运行是出现下面问题:
一、运行报错
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.
但是我已经给了权限 在文件
<uses-permission android:name="android.permission.REBOOT"/><uses-permission android:name="android.permission.DEVICE_POWER"/>
其中试了好几种重启的方法,还将手机 系统变为 userdebug 版本,都是一样的错
网上查资料说需要签名,需要修改两处:
1.Android.mk 文件添加如下:
LOCAL_CERTIFICATE := platform
2.AndroidManifest.xml 文件中将 manifest 添加 android:sharedUserId 属性
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="run.xxx.com.myreboot"android:sharedUserId="android.uid.system">
然后编译即可
若不知道怎么将 Android studio 在源码中添加mk编译,请转
https://blog.csdn.net/shiluohuashengmi/article/details/81085572
以上编译即可解决问题
签名种类:
1、testkey:普通APK,默认情况下使用。
2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
3、shared:该APK需要和home/contacts进程共享数据。
4、media:该APK是media/download系统中的一环
本文参考博文地址(非常感谢):
https://blog.csdn.net/fulinwsuafcie/article/details/8459143