我在学校有一个安全系统,我的平板电脑是每个教室的控制台。我注意到老师和管理员很少(或从来没有)重新启动平板电脑,这已引起问题。我想从客户端执行任务,并计划每周重新启动或关闭。我朝正确的方向迈出了几步:
我有:
检查权限的代码:
public void getGrantedPermissions(final String appPackage) {
List<String> granted = new ArrayList<String>();
try {
PackageInfo pi = getPackageManager().getPackageInfo(appPackage, PackageManager.GET_PERMISSIONS);
for (int i = 0; i < pi.requestedPermissions.length; i++) {
if ((pi.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
granted.add(pi.requestedPermissions[i]);
}
}
} catch (Exception e) {}
for(int i = 0; i < granted.size(); i++){
Log.e("Permissions", granted.get(i));
}
}
以下是日志报告的内容。绿色权限是我可以在个人电话上获得的所有权限。黄色权限是我能够从Tablet提供商的白名单中获得的权限。通过这些权限,我们可以确认我具有特权应用程序以及关闭和重新启动权限。
我能够找到一段代码来关闭该应用程序,但似乎我不太清楚如何使用它。下面是我尝试过的代码,错误如下:
Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
运行代码时出错:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.ACTION_REQUEST_SHUTDOWN flg=0x10000000 (has extras) }
“当由于无法找到活动来执行给定的Intent而无法调用Context#startActivity或其变体之一时,将引发此异常。”]
我假设这可能需要我修改manifist.xml,对吗?如果是这样,我不确定该怎么做。我觉得我可能必须在进行呼叫的主要活动中添加一个。但是,我已经尝试过了,但是没有用,或者我写的代码不正确。
提前感谢您的协助!
我在学校有一个安全系统,我的平板电脑是每个教室的控制台。我注意到老师和管理员很少(或从来没有)重新启动平板电脑,这已引起问题。 ...
想通了这一点。我没有意识到PowerManager的存在,但是确实存在,并且它可以工作。我的解决方案如下。另外,如果您没有阅读完整的问题,则我的应用程序是特权/系统应用程序,它使我有权管理电源。普通应用将无法执行此操作。