Android系统应用程序DEVICE_POWER权限错误



我尝试用goToSleep()方法让手机进入深度睡眠。程序被安装到/system/app目录,所以Android系统信息说,这是一个系统应用程序,但如果我尝试调用goToSleep(),我得到这个错误

用户10085和当前进程都没有android.permission.DEVICE_POWER.

代码抽样:

            IPowerManager mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
            long time = SystemClock.uptimeMillis() + 1000;
            try {
                mPowerManager.goToSleep(time);
            } catch (RemoteException e) {
                 Toast.makeText(getApplicationContext(), "error: " + e.toString(), Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

AndroidManifest.xml

<permission android:name="android.permission.DEVICE_POWER"/> 
<uses-permission android:name="android.permission.DEVICE_POWER" />
<permission android:name="android.permission.REBOOT"/>
<uses-permission android:name="android.permission.REBOOT"/>

据我所知,如果我运行系统应用程序比我可以获得访问所有android隐藏或系统功能,还是我错了?

我尝试做的事情来运行应用程序作为系统应用程序:

  1. 复制文件到/system/app
  2. 乔恩0时
  3. chmod 4755
  4. chmod尤格+ s

也许其他人已经遇到过这个问题。任何建议都会有帮助的

通过查看源代码,我看到您需要signature permission,我认为这不足以成为一个系统应用程序,您需要使用相同的证书签名,即/system/framework/android/framework-res.apk

DEVICE_POWER权限不能被第三方应用程序访问。

public static final String DEVICE_POWER新增API level 1

允许低级访问电源管理。

不允许第三方应用程序使用。常量值:"android.permission.DEVICE_POWER"

只要删除上面清单中的第一和第三行,就应该没问题了。你应该打电话给……而不是....你的代码看起来很好

最新更新