在我的Xamarin.Forms项目中,我正在使用Plugin.FirebaseAuth通过电话号码登录。
对于iOS项目,它工作正常,但对于Android,VerifyPhoneNumberAsync()调用
await CrossFirebaseAuth.Current.PhoneAuthProvider.VerifyPhoneNumberAsync(CrossFirebaseAuth.Current.Instance, user.PhoneNumber);
从CrossCurrentActivity.Current.Activity ??
中的https://github.com/f-miyu/Plugin.FirebaseAuth/blob/master/Plugin.FirebaseAuth.Android/PhoneAuthProviderWrapper.cs检查中抛出“当前活动为空”
Plugin.CurrentActivity已初始化(以前在MainActivity.cs中,但现在建议在MainApplication.cs中进行初始化),没有错误,但没有按照https://github.com/jamesmontemagno/CurrentActivityPlugin中的说明进行操作:
MainActivity.cs OnCreate():
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle);
MainApplication.cs OnCreate():
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this);
无论我在哪里初始化CurrentActivity,都通过调用VerifyPhoneNumberAsync()会得到相同的null错误。
添加
var activity = CrossCurrentActivity.Current.Activity ?? throw new NullReferenceException("current activity is null");
MainActivity.cs中的行直接不引发任何错误。
还有什么我可以忽略的吗?
代替init方法,只需将MainActivity分配给插件当前活动。
尝试以下解决方案来设置当前活动。
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle);
替换为
CrossCurrentActivity.Current.Activity = this;
我有同样的问题。我已通过在我的情况下应用相同的工作解决方案来解决此问题。
如果插件在您的项目中不起作用。
您可以尝试以下代码
//current activity
var currentActivity= Android.App.Activity;
//current context
var currentContext = Android.App.Application.Context;