gpt4 book ai didi

android - 在 Android 上使用 OS 2.2 DevicePolicyManager SDK 类同时支持 OS 2.1 设备

转载 作者:行者123 更新时间:2023-11-29 18:20:29 30 4
gpt4 key购买 nike

我想用一些 DevicePolicyManager我的应用程序中的方法。 DevicePolicyManager 是在 OS 2.2 中引入的,但我的应用程序必须继续在 OS 2.1 设备上运行。

这是我想做的伪代码:

if (needSecurity)
{
if (runningOS2.2orGreater)
{
// Invoke the required security policy, e.g.
setPasswordQuality(myComponentName, PASSWORD_QUALITY_NUMERIC)
}
else
{
// Tell the user they can't use this feature
}
}

通过阅读文档,我认为我可能还需要 DeviceAdminReceiver处理 onPasswordFailed 和 onPasswordSucceeded 回调。

根据其他 Stackoverflow 问题(例如 here),我相信我有两个选择:

<强>1。反射(reflection)

继续针对 OS 2.1 SDK 构建并使用反射在运行时调用类,例如

Class myClass =                                                                        
ClassLoader.getSystemClassLoader().loadClass("android.app.admin.DevicePolicyManager")

Object DPMInstance = myClass.newInstance();

Method myMethod = myClass.getMethod("setPasswordQuality",
new Class[] { ComponentName.class,
int.class });
myMethod.invoke(DPMInstance,
new Object[] { myComponentName,
PASSWORD_QUALITY_NUMERIC });

如果我需要实现 DeviceAdminReceiver,反射会起作用吗?我将如何处理对 DeviceAdminReceiver 的回调并回调到我自己的应用程序类中?

<强>2。条件类加载

更改为针对 OS 2.2 SDK 构建。如果当前设备版本是 OS 2.2 或更高版本,则在运行时仅加载 OS 2.2 类,例如

int sdk = new Integer(Build.VERSION.SDK).intValue();

if (sdk > 7)
{
sLog.info("OS 2.2 or later");
return new myClassImplementsDeviceAdminInterfaces();
}
else
{
sLog.info("OS 2.1 or earlier");
return new myClassDoesNotSupportDeviceAdmin();
}

这种方法看起来会生成更容易支持的代码,并且可能也适用于 DeviceAdminReceiver。有人知道它有任何缺点或并发症吗?

所以,我的问题是:

  • 您会推荐使用 DevicePolicyManager 的反射或条件类加载吗?
  • 我是否需要 DeviceAdminReceiver,或者我是否可以检测用户是否有合适的密码,例如通过反复调用 isActivePasswordSufficient在我的应用程序中确认它已经完成?
  • 任何其他提示(如果您有)(例如 this question 表明可能存在强制用户重置密码的问题)。

谢谢!

最佳答案

If I need to implement a DeviceAdminReceiver, will reflection work?

不是真的。您需要使用条件类加载,这意味着您也可以从那条路线开始。

Is anybody aware of any drawbacks or complications to it?

代表我“任何人”的小角落发言,我不知道有什么缺点。不过,我会在 Build 上使用 VERSION_CODES 常量,而不是整数 (7)。而且,除非您支持 1.5,否则您可以在 Build 上使用 SDK_INT 而不是 SDK

Would you recommend reflection or conditional class loading for using DevicePolicyManager?

条件类加载。

Will I need a DeviceAdminReceiver, or can I detect whether the user has a suitable password, e.g. by repeatedly calling isActivePasswordSufficient in my app to confirm it has been done?

我无法回答。如果你没有得到解决这一点的另一个答案,你可以考虑在它自己的 SO 问题中提出这个问题。

Any other tips if you have them

永远不要卷入亚洲的陆战。

关于android - 在 Android 上使用 OS 2.2 DevicePolicyManager SDK 类同时支持 OS 2.1 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811761/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com