Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设备策略管理器-重置密码-Android 3.0问题_Android_Android 3.0 Honeycomb_Device Admin - Fatal编程技术网

设备策略管理器-重置密码-Android 3.0问题

设备策略管理器-重置密码-Android 3.0问题,android,android-3.0-honeycomb,device-admin,Android,Android 3.0 Honeycomb,Device Admin,我在Android应用程序中使用设备策略管理器,我的蜂窝设备有问题。当试图调用resetPassword时,抛出了一个异常。这不是Froyo或姜饼的情况,因为两者都很好 错误是: java.lang.RuntimeException:无法启动receiver Package.Name.Test:java.lang.SecurityException:权限拒绝:写入com.android.providers.settings.SettingsProvider uricontent://settin

我在Android应用程序中使用设备策略管理器,我的蜂窝设备有问题。当试图调用resetPassword时,抛出了一个异常。这不是Froyo或姜饼的情况,因为两者都很好

错误是:

java.lang.RuntimeException:无法启动receiver Package.Name.Test:java.lang.SecurityException:权限拒绝:写入com.android.providers.settings.SettingsProvider uricontent://settings/secure 从pid=x,uid=y需要android.permission.WRITE\u设置

我的Android代码如下:

DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);

if ((mDPM.getActiveAdmins() != null) && (mDPM.isAdminActive(new ComponentName(context, DeviceAdmin.class)))) {
    mDPM.resetPassword(extra, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
    mDPM.lockNow();
} else {
    Log.d(TAG, "Could not lock because device admin not enabled");
}
问题发生在:

mDPM.resetPassword(extra, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
我的设备\u Admin.xml是:

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <force-lock />
        <wipe-data />
        <reset-password />
    </uses-policies>
</device-admin>

就像我说的那样,设备管理员在Froyo和Gingerbread设备上工作得很好,尽管我确实在用户使用不同的键盘时遇到了一些问题,Droid X和HTC Sense就是一个例子。这个问题与时间有关。当我呼叫lockNow时,设备将关闭屏幕,但HTC Sense或MotoBlur在设置、安全、锁定手机后设置的时间之前不会实际锁定键盘


任何帮助都会很棒!我最近刚在I/O上得到一个蜂巢平板电脑,还没有在这个设备上测试过这个应用程序,但我在市场网站上看到了错误,Xoom的用户运行3.0。还没有看到任何3.1设备。

我正在研究这个问题(顺便说一句,这在3.1上也很容易重现),但您似乎已经解决了这个问题,基于。我只是想在这里指出,以防其他人试图研究答案

我正在研究这个问题(顺便说一句,在3.1上也很容易重现),但根据这一点,您似乎已经解决了这个问题。我只是想在这里指出,以防其他人试图研究答案

在Android蜂巢3.0平台上,
DevicePolicyServiceManager
与Gingerbread非常不同,
resetPassword()
的整个流程是:

DevicePolicyServiceManager.resetPassword() --> 
LockPatternUtils.checkPasswordInHistory() --> 
LockPatternUtils.passwordToHash() --> 
LockPatternUtils.getSalt() --> 
LockPatternUtils.putLong(SALT_KEY, salt) --> 
Settings.Secure.putLong(SALT_KEY, salt)
在这里你应该知道为什么需要
WRITE\u设置
,似乎这是谷歌的错误,他们没有将LockPatternUtils.checkPasswordInHistory()方法放在
Binder.clearCallingIndentity()块中

还有一件事,即使您在
AndroidManifest.xml
文件中添加
WRITE\u设置
权限,它也会告诉您还需要
WRITE\u SECURE\u设置
权限

希望谷歌能尽快解决这个问题


另外,这个问题似乎已经在ICS平台上解决了,谷歌已经从resetPassword()块中删除了checkPasswordInHistory()。我认为这不是一个好的解决方案,我不知道为什么?也许他们想尽快发布ICS?

在Android蜂巢3.0平台上,
DevicePolicyServiceManager
与Gingerbread非常不同,
resetPassword()的整个流程是:

DevicePolicyServiceManager.resetPassword() --> 
LockPatternUtils.checkPasswordInHistory() --> 
LockPatternUtils.passwordToHash() --> 
LockPatternUtils.getSalt() --> 
LockPatternUtils.putLong(SALT_KEY, salt) --> 
Settings.Secure.putLong(SALT_KEY, salt)
在这里你应该知道为什么需要
WRITE\u设置
,似乎这是谷歌的错误,他们没有将LockPatternUtils.checkPasswordInHistory()方法放在
Binder.clearCallingIndentity()块中

还有一件事,即使您在
AndroidManifest.xml
文件中添加
WRITE\u设置
权限,它也会告诉您还需要
WRITE\u SECURE\u设置
权限

希望谷歌能尽快解决这个问题


另外,这个问题似乎已经在ICS平台上解决了,谷歌已经从resetPassword()块中删除了checkPasswordInHistory()。我认为这不是一个好的解决方案,我不知道为什么?也许他们想尽快发布ICS?

我也为此而挣扎。解决方案也列在您的一个链接上,但我在这里也会提到它,以防它对其他人有所帮助

  • 如果设备是全新的(或出厂重置),则代码会按照您的描述出现故障

  • 如果用户只使用设置菜单输入一次密码,不知何故,相同的代码开始工作并继续工作


真是一只奇怪的虫子

我也为此挣扎。解决方案也列在您的一个链接上,但我在这里也会提到它,以防它对其他人有所帮助

  • 如果设备是全新的(或出厂重置),则代码会按照您的描述出现故障

  • 如果用户只使用设置菜单输入一次密码,不知何故,相同的代码开始工作并继续工作


真是一只奇怪的虫子

我也面临这个问题,我能告诉你的是,如果你一次也没有手动设置密码,它会给强制关闭请求写入设置权限,但是如果你尝试一次,从那里手动设置密码,它会很有魅力。

我也面临这个问题,我能告诉你的是,如果你一次也没有手动设置密码,它会给强制关闭请求写入设置权限,但如果你尝试一次,从那里手动设置密码,它会很有魅力。

知道这一点很好。我想你是在xoom上测试的吧?这是迄今为止我见过的最疯狂的虫子。没有多少人使用decice admin API,这并没有真正的帮助,或者如果他们使用,我还没有找到他们。是的。。。除非你正在制作一个像SeekDroid这样的应用程序,其中你想允许某人个人锁定或擦除他们的设备,或者为企业开发一个应用程序,其中你可能想强制某人设置一个强密码以保护敏感的公司信息,否则大多数人永远不会接近这些。实际上。。。我是SeekDroid的开发者。希望谷歌有人能看到这个问题,并在安卓3.1+出现之前解决这个问题。很高兴知道这一点。我想你是在xoom上测试的吧?这是迄今为止我见过的最疯狂的虫子。没有多少人使用decice admin API,或者如果