大家好,RT。代码实现了android的reboot 功能,但是发现 shutdown 后还是保留在最后一个画面,也就是没正常关机。请大家帮忙看看,谢谢。
- Java code
reboot:Intent i= new Intent( Intent.ACTION_REBOOT);sendBroadcast( i );shutdown:Intent i= new Intent( Intent.ACTION_SHUTDOWN);sendBroadcast( i );AndroidManifest.xml:.....android: sharedUserId="android.uid.system">....<uses-permission android: name="android.permission.RECEIVE_BOOT_COMPLETED">BootReceiver.java:public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context,Intent intent){ Intent i=new Intent(Intent.ACTION_RUN); i.setClass(context, UpdateProgress.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }
------解决方案--------------------
- Java code
//重启代码位于frameworks\base\core\jni\android_os_Power.cpp,里面有static void android_os_Power_shutdown(JNIEnv *env, jobject clazz){/*关机*/ sync();#ifdef HAVE_ANDROID_OS reboot(RB_POWER_OFF);#endif}static void android_os_Power_reboot(JNIEnv *env, jobject clazz, jstring reason){/*重启*/ sync();#ifdef HAVE_ANDROID_OS if (reason == NULL) { reboot(RB_AUTOBOOT); } else { const char *chars = env->GetStringUTFChars(reason, NULL); __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (char*) chars); env->ReleaseStringUTFChars(reason, chars); // In case it fails. } jniThrowIOException(env, errno);#endif}
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
您好!可以贴下完整的关机与重启的代码吗?我想学习一下啊!
谢谢啦!