解决方案 »
- android的socket问题
- android 4.0.4 编译问题 make otapackage
- android host通讯问题 bulkTransfer返回-1
- 寻求带有恶意代码的软件
- Android新手有没有正在看mars的Android开发视频教程的?xml解析那一节有个不明白的地方?
- 大拿们给普及下Funambol ds这方面的知识
- 请教Android相关~
- Android上使用Zxing二维码扫描
- 程序出现“很抱歉,XX已停止运行”
- 请问android怎么实现矩形框录像,即录像只取矩形框部分的内容
- 在onResume()中调用getIntent()得不到Extra的问题,求高手解答!!!
- 求助如何提取音频的标签信息,不用mediastore
//重启代码位于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
}
try it.
http://topic.csdn.net/u/20091116/08/090c5315-d941-484b-9447-6a11c4b43945.html的帖子中echo007 网友回复了这段信息:看问题要看本质,任何系统级应用都会到linux的系统调用中去, 对于reboot来讲,会调用到int reboot (int mode) 或者直接用 __reboot来做, 所以你只要change mode的值就ok, mode 里有
#define RB_AUTOBOOT LINUX_REBOOT_CMD_RESTART
#define RB_HALT_SYSTEM LINUX_REBOOT_CMD_HALT
#define RB_ENABLE_CAD LINUX_REBOOT_CMD_CAD_ON
#define RB_DISABLE_CAD LINUX_REBOOT_CMD_CAD_OFF
#define RB_POWER_OFF LINUX_REBOOT_CMD_POWER_OFF这些可以选择,power off , autoboot 对应的就是开关机了。 当然您需要root或者system的权限,或者SHELL好像也没问题。
重新查看了下SDK,关于Intent.ACTION_REBOOT , ACTION_SHUTDOWN 的描述:public static final String ACTION_REBOOT
Since: API Level 1Broadcast Action: Have the device reboot. This is only for use by system code.This is a protected intent that can only be sent by the system.
Constant Value: "android.intent.action.REBOOT"public static final String ACTION_SHUTDOWN
Since: API Level 4Broadcast Action: Device is shutting down. This is broadcast when the device is being shut down (completely turned off, not sleeping). Once the broadcast is complete, the final shutdown will proceed and all unsaved data lost. Apps will not normally need to handle this, since the foreground activity will be paused as well.This is a protected intent that can only be sent by the system.
Constant Value: "android.intent.action.ACTION_SHUTDOWN"感觉通过 wiki14 提供的源码中关于关机重启实现的机制和在 Android 中直接使用 Intent 的效果是一样的。
装NDK老出问题,没搞定,wiki14可否帮忙试下上面的代码看行否,当然搞定了后也会试下,有结果再贴出来。附:原帖中疏漏的地方:需在Android.mk中添加这条语句:
LOCAL_CERTIFICATE := platform
In frameworks/base/services/java/com/android/server/BatteryService.javaIntent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN); intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent);重启:
Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i);
谢谢各位的热心解答。
我是说 除了在Android.mk中添加LOCAL_CERTIFICATE := platform,以及在AndroidManifest.xml文件中指定android:sharedUserId="android.uid.system"之外,还需要其它的权限吗?我看你在本贴的开头提供的代码中引入了android.permission.RECEIVE_BOOT_COMPLETED权限,但该权限仅仅会使APP能够接收到系统引导成功(即启动完成)的广播而已,似乎与关机和重启没有关系。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
android:sharedUserId="android.uid.system"
>
<uses-permission android:name="android.permission.SHUTDOWN"/>
习惯的话直接去查doc也OK,Permissions里面会有解释
In frameworks/base/services/java/com/android/server/BatteryService.javaIntent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN); intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent);重启:
Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i); 放在app里面Intent.ACTION_REQUEST_SHUTDOWN压根就找不到,求解!
放在app里面Intent.ACTION_REQUEST_SHUTDOWN压根就找不到,求解! 你好,帖子中的“找不到”是指IDE报错吗,不知道是不是这个意思?
过的太久了都不太记的了,建议你可以尝试先查下reference doc,看能不能找到,找不到;然后可以去找找源码,有,也就是说不是公开的。So,IDE会报错,但是可以和系统源码一起编译.好运,另提前祝端午快乐。
问题2:app怎么在系统源码环境下编译?
11年,即使中文资料,网上应该很多,建议类似如此的关键词“android app 在源码中编译”google下。好运!
我不知道我的理解有没有问题
我把他们直接放在了onCreat里,应该就是关机或者重新启动了吧。
权限也加了。
但是为什么我程序连运行都运行不了
加了这句“android:sharedUserId="android.uid.system"”以后就不行了。。在console中提示INSTALL_FAILED_SHARED_USER_INCOMPATIBLE,请问是什么原因
是使用eclipse编译然后console端显示"INSTALL_FAILED_SHARED_USER_INCOMPATIBLE"吗?
这里牵涉到签名的知识,
search下“android:sharedUserId="android.uid.system,应该会有所收获的
我之前是通过扔进源码里编译解决的,你也可以尝试使用其他的方式解决这个问题
我搜索了,都是用linux弄的,请问你知道windows下怎么弄么……就是直接能用eclipse相关的……
Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i);
请问上述代码中三组键值的意思是什么
虚拟机是关机不了的
另外你是在什么平台下编译的?win?
第二步,编译android源码,SDK.
第三步,在windows下或linux下编写自己的工程。
第四步,在 /out/packages/app/ 下建立自己的工程文件夹,将你自己的工程中的src,res,Admainfest.xml三个,拷贝到第三步建立的工程文件夹。
第五步,忘记了,我现在没在公司。记不清楚命令了。明天再写了。
你好,当初公司用的是windriver系统,包括驱动在内的乱七八糟的东西都有人在写,所以你懂得,不是从网上下载的。实际上只是提供大家一个思路,可以通过调用底层的源代码来实现此功能,因为稍微牵涉到一点系统编译的知识,如果只了解过应用的朋友可能比较陌生。忘记关贴了,印象中我看见的最早的一个关机程序是国外的某个老大写的开源项目,不过需要root权限才能运行,有兴趣可以去搜索下。看了下,国内其实实现这个功能并在线发布的软件已经不少了。
* Set to true in {@link #ACTION_REQUEST_SHUTDOWN} to request confirmation from the user
* before shutting down.
*
* {@hide}
*/
public static final String EXTRA_KEY_CONFIRM = "android.intent.extra.KEY_CONFIRM";
* Activity Action: Start this activity to request system shutdown.
* The optional boolean extra field {@link #EXTRA_KEY_CONFIRM} can be set to true
* to request confirmation from the user before shutting down.
*
* <p class="note">This is a protected intent that can only be sent
* by the system.
*
* {@hide}
*/
public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";
/**
系统源码要另外下?
请问你知道windows下怎么弄么?
怎么放在app文件怎么跟系统源码一起编译啊?