Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 设备管理接收器在少数版本中不工作_Android_Device Admin - Fatal编程技术网

Android 设备管理接收器在少数版本中不工作

Android 设备管理接收器在少数版本中不工作,android,device-admin,Android,Device Admin,我正在开发一个安全应用程序,它可以保护设备免受陌生人的攻击 在我的应用程序中,如果用户试图用错误的PIN/模式/密码解锁设备,我有一个功能可以从前置摄像头捕获图像 我有一个类似这样的代码 public class MyAdminReceiver extends DeviceAdminReceiver { @Override public void onPasswordFailed(Context context, Intent intent, UserHandle user)

我正在开发一个安全应用程序,它可以保护设备免受陌生人的攻击

在我的应用程序中,如果用户试图用错误的PIN/模式/密码解锁设备,我有一个功能可以从前置摄像头捕获图像

我有一个类似这样的代码

public class MyAdminReceiver extends DeviceAdminReceiver {

    @Override
    public void onPasswordFailed(Context context, Intent intent, UserHandle user) {


        Log.d("MyTag", "onPasswordFailed called");
        //Code for starting a service for image capture goes here
        .
        .
        .
    }
    ....
    ....
}
在几乎所有的版本中,我都能正确地捕获图像,并且应用程序运行良好

问题是:在一些设备中,
onPasswordFailed
功能不起作用。设备管理员已正确激活。我尝试再次禁用它并重新激活它。我试着重新启动设备。但什么都没用。我可以在stacktrace中看到此日志

03-09 12:04:48.078 18491-18491/com.my.pkgname D/ActivityThread: BDC-Calling onReceive: intent=Intent { act=android.app.action.ACTION_PASSWORD_FAILED flg=0x10 cmp=com.my.pkgname/.receivers.MyAdminReceiver }, receiver=com.my.pkgname.receivers.MyAdminReceiver@30c2044b
03-09 12:04:48.079 18491-18491/com.my.pkgname D/ActivityThread: BDC-RECEIVER handled : 0 / ReceiverData{intent=Intent { act=android.app.action.ACTION_PASSWORD_FAILED flg=0x10 cmp=com.my.pkgname/.receivers.MyAdminReceiver } packageName=com.my.pkgname resultCode=-1 resultData=null resultExtras=null}
到目前为止,我所能看到的安卓6.0(棉花糖版本)和安卓7.1.1(摩托罗拉设备,如果有帮助的话)的所有设备都存在这个问题

我已经检查了以下问题:

它们与我的admin.xml文件无关,清单声明是正确的,它可以在所有其他Android 7、8、9版本的设备上工作

我已经测试了使用模式,有效引脚,这是超过最小长度。我根本没有设置其他密码限制

我仍然在显示清单部分admin.xml以进行验证

清单声明:

....
<application>
    ....
    <receiver
        android:name=".receivers.MyAdminReceiver"
        android:exported="true"
        android:enabled="true"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data
            android:name="android.app.device_admin"
            android:resource="@xml/admin" />

        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" />
        </intent-filter>
    </receiver>
    ....
</application>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <watch-login />
    </uses-policies>
</device-admin>

void onPasswordFailed(上下文上下文、意图、用户句柄用户)
仅适用于Oreo及以上版本


为了向后兼容,您还需要覆盖
onPasswordFailed(上下文、意图)
。这将使您的代码在牛轧糖及以下产品上运行。

您能给出测试设备的名称或型号吗?工作和不工作。在Moto E4(7.1.1)中不工作。在redmi工作注释5(8.1.0)@Vasudevvvyas
<intent-filter>
    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    <action android:name="android.app.action.ACTION_PASSWORD_FAILED" />
    <action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED"/>
</intent-filter>