我没有很多为 Unity3d 创建 Java (.aar) 插件的经验,但我正在尝试使用此类插件的 firebase 设置 google 身份验证。举一个我的问题的例子,我首先打开一个统一的 android 应用程序,然后我运行下面的 c# 代码,并在我的显示器上弹出一个用谷歌登录的窗口。然后我选择正确的谷歌帐户,然后谷歌意图/活动消失,然后我没有收到任何指示“onActivityResult”已被调用。没有发生错误,我无法对我选择的谷歌帐户信息做任何事情。
在下图中,我单击提交 -> 它会在下一张图片中打开 google 登录活动 -> 然后它返回到提交屏幕(关闭 google 登录活动)。


我认为我的问题出在这一行:
activity.startActivityForResult(signInIntent, RC_SIGN_IN);
本例中的“活动”是从下面的 c# unity 代码发送的 UnityPlayerActivity。我认为这是成功的,所以我的代码正在 C# 统一代码而不是 java 代码中寻找“onActivityResult”方法。任何帮助将不胜感激。如果您需要任何其他信息或屏幕截图,请告诉我。如果我是个白痴,请叫我出来。
这是我从 C# 和 Unity3d 调用 Google 登录插件的代码:
AndroidJNIHelper.debug = true;
using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
activity_context = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
}
using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.package.class")) {
if (pluginClass != null) {
GoogleSignInActivity = pluginClass.CallStatic<AndroidJavaObject>("instance");
GoogleSignInActivity.Call("SetContext", activity_context);
GoogleSignInActivity.Call("StartGoogleLogin", activity_context);
activity_context.Call("runOnUiThread", new AndroidJavaRunnable(() => {
GoogleSignInActivity.Call("ShowMessage", "You signed in as " + display_name);
}));
}
}
以下是创建 Google SignIn Activity 的代码:
public void StartGoogleLogin(UnityPlayerActivity activity) {
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("some url")
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(activity, gso);
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
activity.startActivityForResult(signInIntent, RC_SIGN_IN);
Log.d(TAG, "Activity Started; Waiting For Result");
}
感谢您的时间。
开心每一天1111
有只小跳蛙
BIG阳
随时随地看视频慕课网APP
相关分类