Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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-谷歌登录崩溃_Android_Xamarin_Xamarin.android_Google Signin - Fatal编程技术网

Android-谷歌登录崩溃

Android-谷歌登录崩溃,android,xamarin,xamarin.android,google-signin,Android,Xamarin,Xamarin.android,Google Signin,我能够在我的Xamarin.Forms/Xamarin.Android应用程序中使用NuGet包Xamarin.GooglePlayServices.Auth(v60.1142.1)实现Google登录。 第一次初始登录(请参见LoginAsync())和帐户弹出功能,以及以下在my Xamarin.Forms app.cs中启动的应用程序登录(请参见SilentLoginAsync())和静默登录(请参见SilentLoginAsync())功能。但是,几分钟后,当我再次打开应用程序时,它立即

我能够在我的Xamarin.Forms/Xamarin.Android应用程序中使用NuGet包Xamarin.GooglePlayServices.Auth(v60.1142.1)实现Google登录。 第一次初始登录(请参见LoginAsync())和帐户弹出功能,以及以下在my Xamarin.Forms app.cs中启动的应用程序登录(请参见SilentLoginAsync())和静默登录(请参见SilentLoginAsync())功能。但是,几分钟后,当我再次打开应用程序时,它立即崩溃。我只看到启动屏幕一秒钟,然后它就崩溃了。我确信这与静默登录有关

有什么想法吗?我还有一个问题,为什么GoogleSignIn.GetLastSignedAccount(上下文)在Xamarin.Android中是不可能的。好像整个班级都不见了

public async Task<bool> SilentLoginAsync()
{
    //TODO: check why GoogleSignIn.getLastSignedInAccount(context) != null; does not work in Xamarin

    // it probably crashes here!
    var result = await Auth.GoogleSignInApi.SilentSignIn(apiClient).AsAsync<GoogleSignInResult>();
    signInAccount = result.SignInAccount;

    return result.IsSuccess && result.SignInAccount != null;
}

public Task<bool> LoginAsync()
{
    var tcs = new TaskCompletionSource<bool>();

    var googleCallback = new GoogleCallback()
    {
        HandleSuccess = (GoogleSignInResult loginResult) =>
        {
            signInAccount = loginResult.SignInAccount;
            tcs.SetResult(true);
        },
        HandleCancel = () => tcs.SetCanceled(),
    };

    MainActivity.CurrentActivity.GoogleCallbackManager.Callback = googleCallback;

    var signInIntent = Auth.GoogleSignInApi.GetSignInIntent(apiClient);
    MainActivity.CurrentActivity.StartActivityForResult(signInIntent, RC_SIGN_IN);

    return tcs.Task;
}

检查应用程序输出或Logcat是否有错误消息如果在堆栈跟踪和Xamarin.Forms代码中添加了异常堆栈跟踪,则显示
Page
为空:原因尚不清楚。但是,这可能与您远离表单活动有关。我添加了App.xaml.cs文件。我在App.xaml.cs的OnStart方法中进行静默登录。你认为它在这个方法中可以做异步的事情吗?
Xamarin caused by: android.runtime.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object
Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage(Page page, int width, int height)<7999cc4bd5664eca8a72469344172ca3>:0
Xamarin.Forms.Platform.Android.AppCompat.Platform.Xamarin.Forms.Platform.Android.IPlatformLayout.OnLayout(bool changed, int l, int t, int r, int b)<7999cc4bd5664eca8a72469344172ca3>:0
Xamarin.Forms.Platform.Android.PlatformRenderer.OnLayout(bool changed, int l, int t, int r, int b)<7999cc4bd5664eca8a72469344172ca3>:0
Android.Views.ViewGroup.n_OnLayout_ZIIII(IntPtr jnienv, IntPtr native__this, bool changed, int l, int t, int r, int b)<ff199c98c3f84852925dd37a0ef6113a>:0
at (wrapper dynamic-method) System.Object.9f75f64b-ae6a-4c2f-a4a8-9e33dca4e092(intptr,intptr,bool,int,int,int,int)
md5b60ffeb829f638581ab2bb9b1a7f4f3f.PlatformRenderer.n_onLayout(Native Method)
md5b60ffeb829f638581ab2bb9b1a7f4f3f.PlatformRenderer.onLayout()PlatformRenderer.java:63
android.view.View.layout()View.java:19659
android.view.ViewGroup.layout()ViewGroup.java:6075
android.widget.RelativeLayout.onLayout()RelativeLayout.java:1083
android.view.View.layout()View.java:19659
android.view.ViewGroup.layout()ViewGroup.java:6075
android.widget.FrameLayout.layoutChildren()FrameLayout.java:323
android.widget.FrameLayout.onLayout()FrameLayout.java:261
android.view.View.layout()View.java:19659
android.view.ViewGroup.layout()ViewGroup.java:6075
android.widget.LinearLayout.setChildFrame()LinearLayout.java:1791
android.widget.LinearLayout.layoutVertical()LinearLayout.java:1635
android.widget.LinearLayout.onLayout()LinearLayout.java:1544
android.view.View.layout()View.java:19659
android.view.ViewGroup.layout()ViewGroup.java:6075
android.widget.FrameLayout.layoutChildren()FrameLayout.java:323
android.widget.FrameLayout.onLayout()FrameLayout.java:261
com.android.internal.policy.DecorView.onLayout()DecorView.java:761
android.view.View.layout()View.java:19659
android.view.ViewGroup.layout()ViewGroup.java:6075
android.view.ViewRootImpl.performLayout()ViewRootImpl.java:2496
android.view.ViewRootImpl.performTraversals()ViewRootImpl.java:2212
android.view.ViewRootImpl.doTraversal()ViewRootImpl.java:1392
android.view.ViewRootImpl$TraversalRunnable.run()ViewRootImpl.java:6752
android.view.Choreographer$CallbackRecord.run()Choreographer.java:911
android.view.Choreographer.doCallbacks()Choreographer.java:723
android.view.Choreographer.doFrame()Choreographer.java:658
android.view.Choreographer$FrameDisplayEventReceiver.run()Choreographer.java:897
android.os.Handler.handleCallback()Handler.java:790
android.os.Handler.dispatchMessage()Handler.java:99
android.os.Looper.loop()Looper.java:164
android.app.ActivityThread.main()ActivityThread.java:6494
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run()RuntimeInit.java:438
com.android.internal.os.ZygoteInit.main()ZygoteInit.java:807
public partial class App : Application
{

    public App()
    {
        InitializeComponent();
    }

    public async Task StartAsync()
    {
        if (await GoogleAccount.SilentLoginAsync())
        {
            MainPage = new MainPage();
        }
        else
        {
            MainPage = new NavigationPage(new LoginPage { ViewModel = new LoginViewModel() });
        }
    }

    protected async override void OnStart()
    {
        OnResume();

        await StartAsync();
    }

    // ...
}