Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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 生物特征识别.安卓PIE上的指纹管理器Xamarin表单-9_Android_Xamarin.forms_Fingerprint_Biometrics_Android 9.0 Pie - Fatal编程技术网

Android 生物特征识别.安卓PIE上的指纹管理器Xamarin表单-9

Android 生物特征识别.安卓PIE上的指纹管理器Xamarin表单-9,android,xamarin.forms,fingerprint,biometrics,android-9.0-pie,Android,Xamarin.forms,Fingerprint,Biometrics,Android 9.0 Pie,指纹管理器#isHardwareDetected()和指纹管理器#已注册指纹()。在安卓28中,这两个版本都被弃用。 我还可以使用什么来查看此版本中是否注册了指纹? 我认为这是一种选择 KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 如果该选项没有问题,那么如何将其转换为xamarin表单,例如() 对此:您可以使用Plugin

指纹管理器#isHardwareDetected()和指纹管理器#已注册指纹()。在安卓28中,这两个版本都被弃用。 我还可以使用什么来查看此版本中是否注册了指纹? 我认为这是一种选择

KeyguardManager keyguardManager =
                    (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
如果该选项没有问题,那么如何将其转换为xamarin表单,例如()


对此:

您可以使用
Plugin.Fingerprint
在android 9.0中实现它。

这是我的演示GIF(如果您第一次运行此项目,请确保您已在设备中创建指纹)。

因为表单只有一个活动,如果按下auth页面,我们应该实现
ActivityLifecycleCallbacks
FingerprintDialogFragment

这是main应用程序的代码,它需要
插件.CurrentActivity
插件

    [Application]
public class MainApplication : Application, Application.IActivityLifecycleCallbacks
{
    public MainApplication(IntPtr handle, JniHandleOwnership transer)
      : base(handle, transer)
    {
    }

    public override void OnCreate()
    {
        base.OnCreate();
        RegisterActivityLifecycleCallbacks(this);

        CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);

        // uncomment this line to use custom dialog
        //CrossFingerprint.SetDialogFragmentType<MyCustomDialogFragment>();
    }

    public override void OnTerminate()
    {
        base.OnTerminate();
        UnregisterActivityLifecycleCallbacks(this);
    }

    public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivityDestroyed(Activity activity)
    {
    }

    public void OnActivityPaused(Activity activity)
    {
    }

    public void OnActivityResumed(Activity activity)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivitySaveInstanceState(Activity activity, Bundle outState)
    {
    }

    public void OnActivityStarted(Activity activity)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivityStopped(Activity activity)
    {
    }
}
这是我的演示代码


您可以使用
Plugin.Fingerprint
在android 9.0中实现它。

这是我的演示GIF(如果您第一次运行此项目,请确保您已在设备中创建指纹)。

因为表单只有一个活动,如果按下auth页面,我们应该实现
ActivityLifecycleCallbacks
FingerprintDialogFragment

这是main应用程序的代码,它需要
插件.CurrentActivity
插件

    [Application]
public class MainApplication : Application, Application.IActivityLifecycleCallbacks
{
    public MainApplication(IntPtr handle, JniHandleOwnership transer)
      : base(handle, transer)
    {
    }

    public override void OnCreate()
    {
        base.OnCreate();
        RegisterActivityLifecycleCallbacks(this);

        CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);

        // uncomment this line to use custom dialog
        //CrossFingerprint.SetDialogFragmentType<MyCustomDialogFragment>();
    }

    public override void OnTerminate()
    {
        base.OnTerminate();
        UnregisterActivityLifecycleCallbacks(this);
    }

    public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivityDestroyed(Activity activity)
    {
    }

    public void OnActivityPaused(Activity activity)
    {
    }

    public void OnActivityResumed(Activity activity)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivitySaveInstanceState(Activity activity, Bundle outState)
    {
    }

    public void OnActivityStarted(Activity activity)
    {
        CrossCurrentActivity.Current.Activity = activity;
    }

    public void OnActivityStopped(Activity activity)
    {
    }
}
这是我的演示代码


你能解决这个问题吗,还是我需要帮助你?@G.hakim我发誓我把你的答案标记为回答,但我再也看不到了。这对我的问题有帮助。你能不能把答案再给我一次,这样我就可以把它标为答案了。谢谢我猜我的评论在这里?你能解决这个问题吗?还是我需要帮助你?@G.hakim我发誓我把你的答案标记为回答,但我再也看不到了。这对我的问题有帮助。你能不能把答案再给我一次,这样我就可以把它标为答案了。谢谢我猜我的评论在这里?如果回复有帮助,请尝试将其标记为答案,这将帮助其他有类似问题的人。非常感谢您的帮助。你是对的,你的解决方案非常有效。不过,我正在研究如何更改新的弃用功能,以检测是否有指纹可用或在android 9上注册。如果回复有帮助,请尝试将其标记为答案,这将帮助其他有类似问题的人。非常感谢您的帮助。你是对的,你的解决方案非常有效。然而,我更关注的是如何更改新的弃用函数,以检测是否有指纹可用或在android 9上注册。
   public class MyCustomDialogFragment : FingerprintDialogFragment
{
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your fragment here
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var view = base.OnCreateView(inflater, container, savedInstanceState);
        view.Background = new ColorDrawable(Color.Blue);
        return view;
    }
}