繁体   English   中英

如何在没有 NFC 和 ADB shell 命令的情况下让我的应用程序设备所有者?

[英]How to make my app device owner without NFC and ADB shell command?

我有一个安装在 100 多台设备上的 android 应用程序。 (Android 5.1.1 API22 和 6.0.1 API 23)

https://developer.android.com/reference/android/app/admin/package-summary.html

我浏览了所有这些参考资料,但没有运气。

使用 devicePolicyManager,我收到错误消息:XXXXX 应用程序不是设备所有者。

我知道有一种方法可以通过 shell 命令 (ADB) 获取设备所有者,但是我无法通过 USB 在所有设备上单独执行此操作。

DevicePolicyManager deviceManger = (DevicePolicyManager)Forms.Context.GetSystemService(Context.DevicePolicyService); ComponentName demoDeviceAdmin = new ComponentName(Forms.Context, Java.Lang.Class.FromType(typeof(DeviceAdmin))); deviceManger.SetGlobalSetting(demoDeviceAdmin, "wifi_device_owner_configs_lockdown", "1");

源代码说, “设备所有者只能在未配置的设备上设置,除非它是由“adb”启动的,在这种情况下,如果没有与设备关联的帐户,我们将允许它”

如果您没有设置任何帐户,则可以使用 dpm 以编程方式进行设置:

try {
    Runtime.getRuntime().exec("dpm set-device-owner com.example.deviceowner/.MyDeviceAdminReceiver");
} catch (Exception e) {
    Log.e(TAG, "device owner not set");
    Log.e(TAG, e.toString());
    e.printStackTrace();
}

参考: http : //florent-dupont.blogspot.fr/2015/01/android-shell-command-dpm-device-policy.html

您可以通过几种不同的方式获取 Android 设备的设备所有者。 根据设备是您拥有还是 BYOD,您可以使用不同的方法。 Google 的这张表格总结了您获取设备所有权的所有可能方式。 你可以在这里找到它。

我创建了一个方法 MakeOwner() 并在 onCreate 方法中调用,幸运的是它运行良好......

 public void MakeOwner(){
      try {
            Runtime.getRuntime().exec("dpm set-device-owner com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts/.BasicDeviceAdminReceiver");
        } catch (Exception e) {
            Log.e(TAG, "device owner not set");
            Log.e(TAG, e.toString());
            e.printStackTrace();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM