Android Pie(9.0)-编写关闭或重启功能-特权应用程序

问题描述 投票:0回答:1

我在学校有一个安全系统,我的平板电脑是每个教室的控制台。我注意到老师和管理员很少(或从来没有)重新启动平板电脑,这已引起问题。我想从客户端执行任务,并计划每周重新启动或关闭。我朝正确的方向迈出了几步:

我有:

  1. 与平板电脑提供商/方案提供商交谈,他们已经将我的应用添加为特权应用。
  2. 为(我认为是)所有必需的权限添加了白名单。
  3. 确认特权存在。

检查权限的代码:

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提供商的白名单中获得的权限。通过这些权限,我们可以确认我具有特权应用程序以及关闭和重新启动权限。

enter image description here

我能够找到一段代码来关闭该应用程序,但似乎我不太清楚如何使用它。下面是我尝试过的代码,错误如下:

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,对吗?如果是这样,我不确定该怎么做。我觉得我可能必须在进行呼叫的主要活动中添加一个。但是,我已经尝试过了,但是没有用,或者我写的代码不正确。

提前感谢您的协助!

我在学校有一个安全系统,我的平板电脑是每个教室的控制台。我注意到老师和管理员很少(或从来没有)重新启动平板电脑,这已引起问题。 ...

android android-studio android-9.0-pie
1个回答
0
投票

想通了这一点。我没有意识到PowerManager的存在,但是确实存在,并且它可以工作。我的解决方案如下。另外,如果您没有阅读完整的问题,则我的应用程序是特权/系统应用程序,它使我有权管理电源。普通应用将无法执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.