4

我正在创建关机/重启功能。

    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">

但是它在 users-permission: 中有这个错误permission is only granted to system apps

任何的想法?

4

4 回答 4

5

正如错误消息所解释的,普通应用程序无法获得此权限。这将是一个安全风险,因为您可以构建一个使手机无用的应用程序。

于 2012-12-28T06:58:53.853 回答
1

正常的 SDK 应用程序不会导致手机关机或重启。只有属于固件一部分的应用程序(即,由固件正弦密钥签名)才能持有适当的权限并执行这些操作。

在android SDK文档中,明确指出ACTION_SHUTDOWNACTION_REBOOT是只能由系统发送的受保护意图”。出于安全原因,您无权使用此意图重启设备。

于 2012-12-28T07:03:23.637 回答
0

在我的情况下,我想在移动设备上启动我的应用程序并在移动设备关闭时设置其状态,所以我以这种方式使用

 <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> 

在我的 WifiNotification 中我做了::

public void onReceive(Context context, Intent intent) {

   if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)
   {.
    .
    .
    }
    else if(intent.getAction().equalsIgnoreCase(Intent.ACTION_SHUTDOWN))
    {.
    .
    .
    }
}

其中一项许可是::

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
于 2012-12-28T07:10:51.263 回答
0

如果您的设备已植根,则可以使用此代码进行关机

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 上使用它

于 2017-09-27T18:21:02.540 回答