检查活动密码就足够了,DevicePolicyManager崩溃了

时间:2017-09-11 04:31:55

标签: android

Caused by java.lang.SecurityException: Permission Denial: isUserRunning() from pid=13462, uid=101010 requires android.permission.INTERACT_ACROSS_USERS
   at android.os.Parcel.readException(Parcel.java:1683)
   at android.os.Parcel.readException(Parcel.java:1636)
   at android.app.admin.IDevicePolicyManager$Stub$Proxy.isActivePasswordSufficient(IDevicePolicyManager.java:3714)
   at android.app.admin.DevicePolicyManager.isActivePasswordSufficient(DevicePolicyManager.java:2003)

public boolean isPasswordSufficient() { return mDpm.isActivePasswordSufficient(); }

以上是导致此问题的崩溃日志和方法。崩溃日志取自在线崩溃报告工具Crashlytics。根据官方文档here调用isActivePasswordSufficient()方法可以在2个场景中抛出SecurityException

  • 如果调用应用程序不拥有使用USES_POLICY_LIMIT_PASSWORD的活动管理员
  • 如果用户未解锁。

似乎第一种情况不会发生,因为我在调用方法之前检查了mDpm.isAdminActive(),设备管理员也有

<device-admin>
    <uses-policies>
        <limit-password/>

在元数据中。所以我认为这可能与第二种情况有关。我的问题是,如果用户未解锁是什么意思?我怎么能重现这个问题(如果可能的话。我尝试创建多个用户并在用户帐户之间切换,也尝试启用了屏幕锁定),有没有办法处理这个崩溃而不是添加try catch块(如果它好的,请告诉我为什么)?此次崩溃只发生在目前为止的摩托罗拉Nexus 6 Android 7.0上。

1 个答案:

答案 0 :(得分:0)

尝试将{{1}}添加到您的清单文件中

如下所示进入清单文件:

{{1}}

了解有关 permission-element

的更多信息

<强>语法:

{{1}}