Firebase経由でログインしようとしましたが、奇妙な問題に直面しています。私は正常にいくつかのサムスンのデバイスを除くすべてのデバイスにログインすることができます。以下のようにそれはエラーをスローFirebase、Digits認証エラー、アクティビティが破棄された問題
package com.apponative.committeeapp.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import com.apponative.committeeapp.R;
import com.apponative.committeeapp.datamodles.User;
import com.apponative.committeeapp.firebase.FireBaseDbHandler;
import com.apponative.committeeapp.utils.CommitteeCallBack;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.digits.sdk.android.AuthCallback;
import com.digits.sdk.android.AuthConfig;
import com.digits.sdk.android.Digits;
import com.digits.sdk.android.DigitsException;
import com.digits.sdk.android.DigitsSession;
import com.google.android.gms.common.ConnectionResult;
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 SplashActivity extends Activity
implements CommitteeCallBack.FireBaseAuthCallBack, GoogleApiClient.OnConnectionFailedListener, AuthCallback {
private int screenTag;
private User user;
private ImageView progressBar;
// Firebase
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
AuthConfig.Builder builder = new AuthConfig.Builder();
AuthConfig authConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
fireBaseDigitsAuth();
}
void fireBaseDigitsAuth() {
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() != null) {
}
}
};
mAuth = FirebaseAuth.getInstance();
builder.withAuthCallBack(this);
authConfig = builder.build();
if (mAuth.getCurrentUser() != null) {
FireBaseDbHandler.getDbHandler(this).userProfileCheck(mAuth.getCurrentUser().getEmail().split("@")[0]);
} else {
Digits.authenticate(authConfig);
}
}
public void signUpNewUser(final String email, String password) {
mAuth.createUserWithEmailAndPassword(email + getString(R.string.firebase_domain), password)
.addOnCompleteListener(SplashActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FireBaseDbHandler.getDbHandler(SplashActivity.this).userProfileCheck(email);
}
}
});
}
public void signInExistingUser(final String email, final String password) {
mAuth.signInWithEmailAndPassword(email + getString(R.string.firebase_domain), password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
signUpNewUser(email, password);
} else {
FireBaseDbHandler.getDbHandler(SplashActivity.this).userProfileCheck(email);
}
}
});
}
void startMainActivity(int itemId, User user) {
// Intent intent = new Intent(SplashActivity.this, MainActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// if (user != null) {
// intent.putExtra("userId", user.getUserId());
// intent.putExtra("userName", user.getUsername());
// }
// intent.putExtra("itemId", itemId);
// startActivity(intent);
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
// finish();
}
@Override
public void SignInSuccess(User user) {
progressBar.setVisibility(View.GONE);
this.user = user;
this.screenTag = R.string.tag_home;
startMainActivity(screenTag, user);
}
@Override
public void NewUserRegisteration() {
progressBar.setVisibility(View.GONE);
this.user = null;
this.screenTag = R.string.tag_setprofile;
startMainActivity(screenTag, user);
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void success(DigitsSession session, String phoneNumber) {
signInExistingUser(phoneNumber, phoneNumber);
}
@Override
public void failure(DigitsException error) {
error.printStackTrace();
}
}
::私が問題を発見したデバッグ中に、私は任意のフラグメントをスイッチングしていないのです
Process: com.apponative.committeeapp, PID: 28641
java.lang.IllegalStateException: Activity has been destroyed
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1455)
at android.app.BackStackRecord.commitInternal(BackStackRecord.java:687)
at android.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:667)
at com.google.android.gms.internal.zzaay.zzt(Unknown Source)
at com.google.android.gms.internal.zzaaw.zzc(Unknown Source)
at com.google.android.gms.internal.zzaaw.zzs(Unknown Source)
at com.google.android.gms.tasks.zzh$zza.zzw(Unknown Source)
at com.google.android.gms.tasks.zzh.addOnCompleteListener(Unknown Source)
at com.apponative.committeeapp.ui.SplashActivity.signInExistingUser(SplashActivity.java:115)
at com.apponative.committeeapp.ui.SplashActivity.success(SplashActivity.java:209)
at com.digits.sdk.android.WeakAuthCallback.success(WeakAuthCallback.java:32)
at com.digits.sdk.android.LoginResultReceiver.onReceiveResult(LoginResultReceiver.java:64)
at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:59)
at android.os.ResultReceiver.send(ResultReceiver.java:93)
at com.digits.sdk.android.DigitsControllerImpl$1.run(DigitsControllerImpl.java:178)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
、それは簡単な活動です。私は確信しています携帯電話番号を介してTwitterの桁数字はログインする前に。それはうまく動作します。私は桁を介して確認の直後に一度だけクラッシュする。 Digits確認を送信しないアプリを再起動するとスムーズに実行されます。
ディジットがそれに何らかの問題を抱えているのだろうかと思います。デバッグ中に私は、Twitter Digits startPhoneNumberActivity
とフラグIntent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP
を発見しました。私がこれらの旗が前の活動を破壊していると仮定します。私はすでにこの活動が、ありません使用して、次の試してみました
:
android:persistent="true"
android:noHistory="false"
Build.gradleは:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "https://jitpack.io" }
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.---------"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
dexOptions {
javaMaxHeapSize "4g"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_7
sourceCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile('com.digits.sdk.android:digits:[email protected]') {
transitive = true;
}
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.google.firebase:firebase-database:10.0.1'
compile 'com.android.support:design:25.3.1'
compile 'com.google.firebase:firebase-storage:10.0.1'
compile 'com.firebaseui:firebase-ui-storage:1.1.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
testCompile 'junit:junit:4.12'
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true;
}
compile 'com.android.support:multidex:1.0.1'
}
apply plugin: 'com.google.gms.google-services'
投稿者ur full activity –
デバッグ中の@AvinashRoy私は、TwitterのDigits startPhoneNumberアクティビティが 'Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP '。私がこれらの旗が前の活動を破壊していると仮定します。 –
ur build.gradleファイル@ SairaNawazファイルを追加してください。 –