我正在开发一款安全应用程序,可以保护设备免受陌生人的侵害。
在我的应用程序中,如果用户尝试使用错误的 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
.
.
.
}
....
....
}
Run Code Online (Sandbox Code Playgroud)
在几乎所有版本中,我都能正确捕获图像,并且应用程序运行良好。
问题是:在某些设备中该功能onPasswordFailed不起作用。设备管理已正确激活。我尝试再次禁用它并重新激活它。我尝试重新启动设备。但没有任何效果。我可以在堆栈跟踪中看到此日志。
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}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能看到的所有 Android 6.0(棉花糖版本)和 Android …