在android中获得关机或重启权限
我正在创建关闭/重新启动功能在android中获得关机或重启权限,android,permissions,Android,Permissions,我正在创建关闭/重新启动功能 Intent intent = new Intent(); intent.setAction("android.intent.action.ACTION_SHUTDOWN"); sendBroadcast(intent); 在xml中: <uses-permission android:name="android.permission.SHUTDOWN"/> <manifest xmlns:android="
Intent intent = new Intent();
intent.setAction("android.intent.action.ACTION_SHUTDOWN");
sendBroadcast(intent);
在xml中:
<uses-permission android:name="android.permission.SHUTDOWN"/>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.crazyit.net"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="android.uid.system">
但它在用户权限中有以下错误:权限仅授予系统应用程序
有什么想法吗?正如错误消息所解释的,普通应用程序无法获得此权限。这将是一个安全风险,因为您可能会构建一个使手机变得无用的应用程序。普通SDK应用程序无法导致手机关闭或重新启动。只有作为固件一部分的应用程序(即,由固件sining密钥签名)才能拥有适当的权限并执行这些操作
android SDK文档中明确指出,
ACTION\u SHUTDOWN
和ACTION\u REBOOT
是受保护的意图,只能由系统发送“。出于安全原因,您无权使用此意图重新启动设备。在我的情况下,我希望在手机上启动我的应用程序,并将其状态设置为手机已关闭,因此我以这种方式使用。”
<receiver android:name="WifiNotification" android:enabled="true" android:permission="android.permission.CHANGE_WIFI_STATE">
<intent-filter >
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.SCAN_RESULTS"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.ACTION_SHUTDOWN"/>
</intent-filter>
</receiver>
其中一个权限是::
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
如果您的设备是根设备,您可以使用此代码关机
Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot -p" });
并使用此代码重新启动
Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot now" });
我在Xamarin.Android上使用这个谢谢您的许可参考。Android的Intent.ACTION\u SHUTDOWN的文档出于某种原因没有提到它……这是真的,但不是很有帮助。如何获得这样的许可?例如,在构建COSU应用程序时,这将非常有用。@StephenM它需要一个自定义的Android构建,其中包含作为系统应用程序的应用程序。
Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot now" });