我尝试用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隐藏或系统功能,还是我错了?
我尝试做的事情来运行应用程序作为系统应用程序:
- 复制文件到/system/app
- 乔恩0时
- chmod 4755
- 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"
只要删除上面清单中的第一和第三行,就应该没问题了。你应该打电话给……而不是....你的代码看起来很好