java - 使应用程序成为设备管理员

标签 java android adb device-admin

我正在使用以下代码将应用程序设置为设备管理员

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminComponentName); // Here setting my receiver as device admin
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "You must enable device administration for certain features"
                            + " of the app to function.");
startActivityForResult(intent, 50);

允许应用程序成为设备管理员后,我正在执行以下代码

devicePolicyManager.setSecureSetting(deviceAdminComponentName, Settings.Secure.INSTALL_NON_MARKET_APPS, "1");

这里它抛出了我的错误 管理组件信息 {...} 未设置为配置文件所有者..

我用谷歌搜索发现DeviceAdminReceiver可以通过使用以下adb命令设置为管理员

dpm set-device-owner com.yego.driverkiosk/.DeviceAdminMaker 它可以工作。但我希望仅通过代码来完成。

DeviceAdminReceiver

public class DeviceAdminMaker extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
   // showToast(context, context.getString(R.string.admin_receiver_status_enabled));
}

@Override
public void onDisabled(Context context, Intent intent) {
    //showToast(context, context.getString(R.string.admin_receiver_status_disabled));
}

@Override
public void onPasswordChanged(Context context, Intent intent) {
   // showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
}

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
}
}

我该怎么做?

最佳答案

您不能仅通过代码来做到这一点。这些都是非常安全的设置。基本上,您要求比设备用户更高的权限 - super 用户权限。如果任何恶意软件都可以使用它,则永远不会允许它通过其他 channel 。这些代码只能用于您实际控制的设备,例如信息亭或公司拥有的设备。

(此外,如果您通过 dpm 将自己设置为设备策略所有者,则没有理由同时让自己成为管理员,所有者是更高级别的管理员)。

关于java - 使应用程序成为设备管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45273739/

相关文章:

面向 Clojure 用户的 Java

java - 如何从一组列表中的每个值创建元组列表

android - Settings.canDrawOverlays(context) 在 Android Oreo 上返回 false

android - 使用 Ionic 的自定义通知模板

android - 如何在安卓模拟器上安装应用程序?

java - switch 语句中一组字符串值的输入验证

java - 错误: ORA-02289: sequence does not exist in hibernate

android - 你的 CPU 不支持 VT-x

android - 如何以正确的格式获取日期

android - 如何更改 ANDROID 模拟器 UUID?