问题描述
- android在jni中调用system()函数
-
想在android程序中实现设备的重启。
android在jni(c++写的)中调用system("reboot"),但是调试时,程序执行到此无任何反应,并继续执行了下面的代码。也试过了其他方法,如:android_reboot(ANDROID_RB_RESTART,0,0);
仍然无法实现重启。
想问各位有什么好办法解决吗?
解决方案
题主可以参考源码中 关机键按下时所执行的代码,印象中是一个叫做shutdownThread的东西,也可以获得系统权限,然后发关机广播来实现。
解决方案二:
Log.d(TAG, "halt...");
Intent intent1 = new Intent();
intent1.setAction("android.intent.action.ACTION_REQUEST_SHUTDOWN");
intent1.putExtra("android.intent.extra.KEY_CONFIRM",false);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent1);
这个广播需要系统权限, android:sharedUserId="android.uid.system" ,和关机权限: <uses-permission android:name="android.permission.SHUTDOWN"/>
, 如何编译具有系统签名的app,题主自己搜索一下。
解决方案三:
执行reboot命令没有root权限,不知道楼主现在解决了没有
时间: 2024-08-06 21:56:52