在android中获取关闭或重启的权限

时间:2012-12-28 06:55:52

标签: 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="http://schemas.android.com/apk/res/android"
  package="org.crazyit.net"
  android:versionCode="1"
  android:versionName="1.0" 
  android:sharedUserId="android.uid.system">

但是在用户权限中出现此错误:permission is only granted to system apps

有什么想法吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

普通SDK应用程序无法导致手机关机或重启。只有属于固件的应用程序(即由固件主题密钥签名)才能保留适当的权限并执行这些操作。

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

答案 2 :(得分: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"/>

答案 3 :(得分: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上使用它