onActivityResult 已弃用,如何处理 android(Java) 的片段中的谷歌登录?

7 android google-fit google-signin

    @Override **//depricated**
    public void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
         if (resultCode == Activity.RESULT_OK) {
            if (requestCode == REQUEST_OAUTH_REQUEST_CODE) {
                insertAndVerifySession();
            }
        }
    }

GoogleSignIn.requestPermissions(
                fragment,
                REQUEST_OAUTH_REQUEST_CODE,
                GoogleSignIn.getLastSignedInAccount(context),
                fitnessOptions);
Run Code Online (Sandbox Code Playgroud)

Fragment 中 GoogleSignIn 的 onActivityResult 的替代方案是什么?

Nav*_*idi 4

正如这里所说,您可以通过调用获得登录意图getSignInIntent

ActivityResultLauncher<Intent> exampleActivityResult= registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
    @Override
    public void onActivityResult(ActivityResult result) {
        if (result.getResultCode() == Activity.RESULT_OK) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
handleSignInResult(task);
        }
    }
});



//call
   exampleActivityResult.launch(mGoogleSignInClient.getSignInIntent());
Run Code Online (Sandbox Code Playgroud)

更新 - 2021 年 11 月 30 日

这是谷歌的新方法

  • @MirianaItani 我只是使用了旧方法,即“onActivityResult”。它已被弃用,但在未来几年内不会消失。当它被删除时,谷歌可能会为此提出一个解决方案。 (2认同)