我们可以通过编程方式关闭Android手机吗?
第二个问题:如何在Android中锁定和解锁屏幕?
我正在使用以下代码片段,但它对我不起作用.
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard(); // to disable
lock.reenableKeygaurd();// to enable
Run Code Online (Sandbox Code Playgroud)
我也使用了许可.
She*_*yar 34
正如CommonsWare已经说过,这在普通的SDK应用程序中是不可能的.你需要用你的应用程序签名System Firmware Key.但是您的应用程序可能具有Root特权.尝试使用以下代码(如果您有SU访问权限):
关掉:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
重新开始:
相同的代码,只需使用"reboot"而不是"reboot -p".
[另一方面:我在某处看到这些命令在Stock HTC ROM上不起作用,但还没有证实我自己]
Com*_*are 23
您无法从普通的SDK应用程序执行此操作.只有使用系统固件签名密钥签名的应用程序才能执行此操作
xil*_*il3 16
您可以使用PowerManager使其重新启动(这并不能保证它会重新启动 - 操作系统可能会取消它):
http://developer.android.com/reference/android/os/PowerManager.html#reboot(java.lang.String)
它需要REBOOT权限:
http://developer.android.com/reference/android/Manifest.permission.html#REBOOT
您是否还可以在尝试启用/禁用键盘锁时检查您的logcat,并发布什么?
一个更好的解决方案是运行:
su -c am start -a android.intent.action.ACTION_REQUEST_SHUTDOWN
你可以使用一个Process.
如果您拥有sigOrSystem权限android.permission.SHUTDOWN,您可以像这样提升受保护的ACTION_REQUEST_SHUTDOWN Intent:
Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
请注意,在Android 4.0之前,此权限仅为签名.
| 归档时间: |
|
| 查看次数: |
54204 次 |
| 最近记录: |