我是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