我正在创建一个应用程序,我使用的登录系统是直接进入google帐户的系统,当我在android studio中测试其“运行”时,一切运行正常,但是当我将其导出到.apk时似乎n可以与Firebase连接,或者可以与Internet连接,如您在所附图像中所见,我已经具有Internet权限。如果您能帮助我,我将非常感谢。
AndroidManifest http://prntscr.com/nfbsxn
我试图查看返回的错误消息,并且总是给出类似“ 7”或“ 10:”的数字。错误的一部分将在代码中被注释掉
package sandro.sf.testar;
//I took the imports to not get so big
public class MainActivity extends AppCompatActivity {
private SignInButton mGoogleBtn;
private static final int RC_SIGN_IN = 1;
private GoogleApiClient mGoogleSignInClient;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private static final String TAG = "activity_act_inicial";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_act_inicial);
FirebaseApp.initializeApp(this);
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() != null) {
String uid = FirebaseAuth.getInstance().getUid();
DocumentReference mDocRef = FirebaseFirestore.getInstance().document("Users/" + uid);
mDocRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if(documentSnapshot.exists()){
Log.i("teste", "Existe");
Intent intent = new Intent(MainActivity.this, Logado.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return;
}
Log.i("teste", "No Existe");
Intent intent = new Intent(MainActivity.this, Alternative2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i(TAG, "error 1 " + e.getMessage());
}
});
}
}
};
mGoogleBtn = (SignInButton) findViewById(R.id.GoogleBtn);
mAuth = FirebaseAuth.getInstance();
//Configure Google Sign In
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleSignInClient = new GoogleApiClient.Builder(getApplicationContext())
.enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {e
Toast.makeText(MainActivity.this, "Mensagem de erro(teste)", Toast.LENGTH_LONG).show();
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso). build();
mGoogleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Dentro de onClick" );
signIn();
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "Dentro de onStart" );
mAuth.addAuthStateListener(mAuthListener);
}
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleSignInClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
Log.d(TAG, "Dentro de signIn" );
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) { //here it returns the error, it does not go through try
Toast.makeText(this, e.getMessage(),
Toast.LENGTH_SHORT).show(); // <- here is the error message!!!!
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:success" + task.isSuccessful());
if (!task.isSuccessful()) {
Log.d(TAG, "signInWithCredential:Exeption" , task.getException());
Toast.makeText(MainActivity.this, "Falha ao efetuar o login, por favor verifique sua conecção.", Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
}
当用户可以与Firebase连接时,我想要它去另一个活动。问题是它仅在编译apk时出错,在模拟器内部不会给出错误