0

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' 
+0

投稿者ur full activity –

+0

デバッグ中の@AvinashRoy私は、TwitterのDigits startPhoneNumberアクティビティが 'Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP '。私がこれらの旗が前の活動を破壊していると仮定します。 –

+0

ur build.gradleファイル@ SairaNawazファイルを追加してください。 –

答えて

0

FLAG_ACTIVITY_CLEAR_TOPは活動を殺すここでの問題です。

Fabric.with(これは新しいTwitterCore(authConfig)、新しいDigits())を呼び出します。 onCreate()アクティビティメソッドで問題を解決できます。

+0

Twiiter Digitsクラスのため、削除できません。 Digitsはビルダーを通じて活動を開始します。 –

+0

intent.setフラグは、ここでそれを削除できませんか? –

+0

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); –

関連する問題