代码之家  ›  专栏  ›  技术社区  ›  parsa

Firebase身份验证请求更新google play服务

  •  0
  • parsa  · 技术社区  · 6 年前

    我想创建一个EmailPassword身份验证页,因为它可以从下面的代码推断出来:

    package parsa.lop.sibeh;
    
    import android.content.Intent;
    import android.support.annotation.NonNull;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.firebase.auth.AuthResult;
    import com.google.firebase.auth.FirebaseAuth;
    
    public class MainActivity extends AppCompatActivity {
        private FirebaseAuth mAuth;
        private Button mLogin;
        private EditText mEmail;
        private EditText mPassword;
        private GoogleApiClient mGoogleApiClient;
    
        private FirebaseAuth.AuthStateListener mAuthListener;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mAuth = FirebaseAuth.getInstance();
            mLogin = findViewById(R.id.login);
            mEmail = findViewById(R.id.email);
            mPassword = findViewById(R.id.password);
            mAuthListener = new FirebaseAuth.AuthStateListener() {
                @Override
                public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                    if(firebaseAuth.getCurrentUser() != null){
                        startActivity(new Intent(MainActivity.this, StartActivity.class));
                    }
                }
            };
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            mAuth.addAuthStateListener(mAuthListener);
        }
    
        public void loginButton(View view){
    
            String email = mEmail.getText().toString();
            String pass = mPassword.getText().toString();
            mAuth.signInWithEmailAndPassword(email, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){
                        Toast.makeText(MainActivity.this, "Signed In", Toast.LENGTH_LONG).show();
                    }
                }
            });
    
    
        }
    }
    

    我的应用程序 build.gradle 包含

    implementation 'com.google.firebase:firebase-core:16.0.6'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
    

    我的项目呢 生成.gradle 包含

    classpath 'com.google.gms:google-services:4.2.0' 
    

    我在firebase中创建了一个帐户并下载了 google-services.json 在我的应用程序文件夹中。 所以我没有得到任何错误,除了当我点击按钮通过 loginButton() 函数我得到一个 Notification 从模拟器更新google play服务

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gastón Saillén Michael Lehenbauer    6 年前

    所有谷歌服务,如Firebase,谷歌地图和更多的工作与谷歌播放服务,如果你没有更新他们,任何这些服务将运行在你的设备,你需要更新他们,并确保他们是最新的。

    为了避免用户被困在这个窗口,你可以添加一个检查来验证googleplay服务版本是否是最新的,如果不是,你可以重定向你的用户更新它

    final String appPackageName = "con.google.android.gms"; // package name of the app
    
        int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
        if(status == ConnectionResult.SUCCESS) {
            //alarm to go and install Google Play Services
        }else if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){
           Toast.makeText(context,"please udpate your google play service",Toast.LENGTH_SHORT).show
       try {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
         } catch (android.content.ActivityNotFoundException anfe) {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
    }
        }
    

    在else语句中,我们将重定向用户以将其安装在此位置

    https://play.google.com/store/apps/details?id=com.google.android.gms

    要从模拟器更新Google Play服务,请参阅以下答案 updating Google play services in Emulator