Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase,数字身份验证错误,活动已销毁问题_Android_Firebase_Firebase Authentication_Twitter Fabric_Twitter Digits - Fatal编程技术网

Android Firebase,数字身份验证错误,活动已销毁问题

Android Firebase,数字身份验证错误,活动已销毁问题,android,firebase,firebase-authentication,twitter-fabric,twitter-digits,Android,Firebase,Firebase Authentication,Twitter Fabric,Twitter Digits,我试图通过Firebase登录,但遇到了一个奇怪的问题。我可以成功登录除一些三星设备外的所有设备。调试时,我在以下位置发现问题: package com.apponative.committeeapp.ui; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.

我试图通过Firebase登录,但遇到了一个奇怪的问题。我可以成功登录除一些三星设备外的所有设备。调试时,我在以下位置发现问题:

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();
    }
}
我没有切换任何片段,这是一个简单的活动。我在登录前通过Twitter Digits sdk确认手机号码。它很好用。通过数字确认后,我只会崩溃一次。重新启动不发送数字确认的应用程序运行平稳

我想知道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:2.0.6@aar') {
        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:2.6.8@aar') {
        transitive = true;
    }
    compile 'com.android.support:multidex:1.0.1'
}


apply plugin: 'com.google.gms.google-services'

标记活动清除顶部是导致活动停止的问题


调用Fabric.with(this,newtwittercore(authConfig),newdigits());在onCreate()中,活动方法可以为您解决问题。

发布您的完整信息activity@AvinashRoy在调试过程中,我发现Twitter用标志“Intent.FLAG_activity_NEW_TASK | Intent.FLAG_activity_CLEAR_TOP”来标记StartPhoneumber活动。我假设这些标志正在破坏以前的活动。添加ur build.gradlefile@SairaNawazsrybuild.gradle文件检查它可能帮助您解决的问题。我无法删除它,因为它位于Twiiter Digits的类中。Digits通过builder.intent.set标志启动其活动,您不能在此处删除它吗??intent.setFlags(intent.FLAG\u activity\u NEW\u TASK);它是SDK的类,该类中的活动是用私有方法启动的,并且该类是“锁定”的、不可编辑的、不可执行的
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:2.0.6@aar') {
        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:2.6.8@aar') {
        transitive = true;
    }
    compile 'com.android.support:multidex:1.0.1'
}


apply plugin: 'com.google.gms.google-services'