Xamarin - 检测手机解锁事件上的正确或不正确的引脚



我是Xamarin的新手。我希望当用户尝试登录他的手机(设备级别,而不是应用程序(时能够检测到不正确/正确的密码。我尝试了 DeviceAdminReceiver 类,但它没有触发 OnPasswordFailed/OnPasswordSuccess 方法。请参阅下面的代码:

接收器

[BroadcastReceiver(Enabled = true)]
    [Android.Runtime.Register("android/app/admin/DeviceAdminReceiver", DoNotGenerateAcw = true)]
    public class LoginWatcher : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnReceive",
            ToastLength.Long).Show();
        }
        public void OnDisabled(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnDisabled",
            ToastLength.Long).Show();
        }

        public void OnEnabled(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnEnabled",
            ToastLength.Long).Show();
        }
        public void OnPasswordChanged(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnPasswordChanged",
            ToastLength.Long).Show(); 
        }
        public void OnPasswordExpiring(Context context, Intent intent)
        { 
            Toast.MakeText(context, "OnPasswordExpiring",
            ToastLength.Long).Show(); 
        }
        public void OnPasswordFailed(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnPasswordFailed", ToastLength.Long).Show();
        }

        public void OnPasswordSucceeded(Context context, Intent intent)
        {
            Toast.MakeText(context, "OnPasswordSucceeded", ToastLength.Long).Show();
        }
    }

清单

<receiver android:name=".LoginWatcher" android:label="@string/sample_device_admin" android:description="@string/sample_device_admin_description" android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data android:name="android.app.device_admin" android:resource="@drawable/device_policies" />
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" />
            <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
            <action android:name="android.app.action.ACTION_PASSWORD_CHANGED" />
            <action android:name="android.app.action.ACTION_PASSWORD_EXPIRING" />
            <action android:name="android.app.action.ACTION_PASSWORD_FAILED" />
            <action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED" />
        </intent-filter>
    </receiver>
    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />

政策

<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
    <disable-keyguard-features />
  </uses-policies>
</device-admin>

您可以设置一个 DeviceAdminReceiver,该接收器将收到有关密码尝试失败的通知,以及在尝试失败后发生的成功密码尝试。这在 Android 设备管理 API 的文档中有所介绍。

请注意,用户必须同意允许你的应用通过"设置"应用充当设备管理员,然后你才能获取这些事件。此示例项目演示如何侦听这些事件,以及设置密码质量策略。

这是您可以查看的相同线程:Xamarin MonoAndroid DeviceAdmin

最新更新