始终开启的 *** 以编程方式打开 android

Posted

技术标签:

【中文标题】始终开启的 *** 以编程方式打开 android【英文标题】:Always-on *** switch on programmatically android 【发布时间】:2021-09-13 17:04:47 【问题描述】:

始终开启 *** 开关能否以编程方式开启?

我已添加设备管理员权限。之后,我一直使用设备管理员进行设置

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    mDeviceAdminSample = new ComponentName(this, DeviceAdminReceiver.class);
    isAdminApp = mDPM.isAdminActive(mDeviceAdminSample);

    if (isAdminApp) 
        try 
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) 
                mDPM.setAlwaysOn***Package(mDeviceAdminSample,"", true);
            
         catch (PackageManager.NameNotFoundException namenotfoundexception) 
            namenotfoundexception.printStackTrace();
         catch (Exception ex) 
        
    

但它没有启用永远在线。

我已添加安装包名称

mDPM.setAlwaysOn***Package(mDeviceAdminSample,"my.app.package.name", true);

但仍未启用开关。

那么这段代码在做什么呢? 如何以编程方式启用它?

我希望它像下图一样

【问题讨论】:

有人对这个问题有任何相关的答案吗? 【参考方案1】:

根据docs,setAlwaysOn***Package 只能由配置文件所有者(通常是工作配置文件上的 MDM 客户端)或设备所有者(对于完全托管的设备)使用:

由设备或配置文件所有者调用,以通过特定应用为当前用户配置始终开启的 *** 连接。此连接会在重新启动后自动授予并保持。

作为个人资料用户 - 我不希望我的 *** 自行决定何时连接(如果实施正确,以编程方式设置始终开启将立即连接 ***)。

作为工作资料用户(戴上员工的帽子),这不是我的决定,而是我的组织(通过资料所有者应用)的决定。

所以,总而言之,这种行为是有道理的。

更新:

您可以克隆、构建和调试 Google 的 Test DPC 应用,而不是实施 MDM,这可能需要大量工作,该应用拥有以编程方式测试切换永远在线 *** 所需的一切。 p>

它还有数以百万计的其他东西,你不需要,所以一定要忽略其余的:)

我没有看过他们的代码,但我建议搜索setAlwaysOn***Package函数的用法。

Google 的 Test DPC 应用:

Link 到 Play 商店 Link 到 GitHub 仓库(自己构建和调试)

【讨论】:

那么我应该制作我的应用程序 MDM 客户端还是什么? 创建一个假的 MDM 客户端需要做很多工作,因为您需要创建一个工作资料并实施 DPC 应用程序。我建议使用 Google 的官方 DPC 演示应用程序,它可以完成所有这些操作,并且它是开源的,因此您可以使用您的应用程序签出、构建和调试他们的代码。我正在用详细信息更新我的答案。 非常感谢您的信息。因此,在我接受您的回答时,没有其他方法可以在不创建虚假 MDM 客户端的情况下始终使用 ***... 我相信是的。关于这些坏消息我很遗憾。这是为企业 *** 设计的 API

以上是关于始终开启的 *** 以编程方式打开 android的主要内容,如果未能解决你的问题,请参考以下文章

在android中以编程方式覆盖文本到语音设置中的“始终使用我的设置”选项

如何在 Android 中以编程方式触发自定义信息窗口

有啥方法可以访问 Android 中的手电筒灯状态。我想以编程方式检查闪光灯是处于开启状态还是关闭状态

Android - 推送通知已开启?

以编程方式打开 Android 设置

Android以编程方式打开/关闭WiFi热点