【问题标题】:Firebase Phone Authentication Android gives Error NoSuchMethodError: android.support.v4.app.FragmentManager.isStateSavedFirebase 电话身份验证 Android 给出错误 NoSuchMethodError: android.support.v4.app.FragmentManager.isStateSaved
【发布时间】:2018-04-28 22:19:26
【问题描述】:

我正在我的应用中实施 Firebase Google 和电话身份验证。 使用 Google 登录工作正常。但是电话认证给了

错误:NoSuchMethodError:android.support.v4.app.FragmentManager.isStateSaved

我在 Android 中使用 Firebase 和 Firebase-UI

这就是APP级构建Gradle文件

apply plugin: 'com.android.application'

android {
        compileSdkVersion 26
        defaultConfig {
        applicationId "com.dev_man_team.fiverr.predictnwin"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner 
        "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
       }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    compile 'com.android.support:recyclerview-v7:26.1.0'
    compile 'com.android.support:design:26.1.0'
    compile 'com.android.support:cardview-v7:26.1.0'
    compile 'com.google.firebase:firebase-database:11.6.0'
    compile 'com.google.firebase:firebase-storage:11.6.0'
    compile 'com.google.firebase:firebase-auth:11.6.0'
    compile 'com.google.android.gms:play-services:11.6.0'

    compile 'com.firebaseui:firebase-ui-database:3.1.0'

    compile 'com.firebaseui:firebase-ui-auth:3.1.0'

    compile 'com.firebaseui:firebase-ui-storage:3.1.0'
}

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

这就是代码

private FirebaseAuth auth;
private static final int RC_SIGN_IN = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup_login);

    auth = FirebaseAuth.getInstance();
    if(auth.getCurrentUser() != null){
        Toast.makeText(getApplicationContext(), "User is Already Signed in", Toast.LENGTH_LONG).show();
    }
    else{

        signUp();
    }
}

private void signUp() {
    List<AuthUI.IdpConfig> providers = new ArrayList<>();
    providers.add(new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build());
    providers.add(new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());
    startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().setAvailableProviders(providers).build(), RC_SIGN_IN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == RC_SIGN_IN){
        IdpResponse response = IdpResponse.fromResultIntent(data);

        if(resultCode == RESULT_OK){
            startActivity(new Intent(this, MainActivity.class));
            finish();
            Toast.makeText(getApplicationContext(), "User Signed in", Toast.LENGTH_LONG).show();
        }
    }
}

这就是我收到的错误

11-15 20:48:12.509 9712-9712/com.dev_man_team.fiverr.predictnwin E/UncaughtException: java.lang.NoSuchMethodError: android.support.v4.app.FragmentManager.isStateSaved 在 com.firebase.ui.auth.ui.phone.CompletableProgressDialog.showAllowingStateLoss(CompletableProgressDialog.java:51) 在 com.firebase.ui.auth.ui.phone.CompletableProgressDialog.show(CompletableProgressDialog.java:41) 在 com.firebase.ui.auth.ui.phone.PhoneVerificationActivity.showLoadingDialog(PhoneVerificationActivity.java:390) 在 com.firebase.ui.auth.ui.phone.PhoneVerificationActivity.verifyPhoneNumber(PhoneVerificationActivity.java:157) 在 com.firebase.ui.auth.ui.phone.VerifyPhoneNumberFragment.onNext(VerifyPhoneNumberFragment.java:200) 在 com.firebase.ui.auth.ui.phone.VerifyPhoneNumberFragment.onActivityResult(VerifyPhoneNumberFragment.java:184) 在 android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164) 在 android.app.Activity.dispatchActivityResult(Activity.java:5387) 在 android.app.ActivityThread.deliverResults(ActivityThread.java:3205) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:3252) 在 android.app.ActivityThread.access$1200(ActivityThread.java:143) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4960) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 在 dalvik.system.NativeStart.main(本机方法) 11-15 20:48:12.769 9712-9712/com.dev_man_team.fiverr.predictnwin E/AndroidRuntime: 致命异常: main java.lang.NoSuchMethodError: android.support.v4.app.FragmentManager.isStateSaved 在 com.firebase.ui.auth.ui.phone.CompletableProgressDialog.showAllowingStateLoss(CompletableProgressDialog.java:51) 在 com.firebase.ui.auth.ui.phone.CompletableProgressDialog.show(CompletableProgressDialog.java:41) 在 com.firebase.ui.auth.ui.phone.PhoneVerificationActivity.showLoadingDialog(PhoneVerificationActivity.java:390) 在 com.firebase.ui.auth.ui.phone.PhoneVerificationActivity.verifyPhoneNumber(PhoneVerificationActivity.java:157) 在 com.firebase.ui.auth.ui.phone.VerifyPhoneNumberFragment.onNext(VerifyPhoneNumberFragment.java:200) 在 com.firebase.ui.auth.ui.phone.VerifyPhoneNumberFragment.onActivityResult(VerifyPhoneNumberFragment.java:184) 在 android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164) 在 android.app.Activity.dispatchActivityResult(Activity.java:5387) 在 android.app.ActivityThread.deliverResults(ActivityThread.java:3205) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:3252) 在 android.app.ActivityThread.access$1200(ActivityThread.java:143) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4960) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 在 dalvik.system.NativeStart.main(Native Method)

提前感谢您纠正我的错误。 我会感谢你的帮助。

【问题讨论】:

    标签: android firebase firebase-authentication firebaseui


    【解决方案1】:

    三个建议:

    (1) 您正在使用 FirebaseUI 版本 3.1.0 以及 Firebase 和 Google Play 库的更新版本 11.6.0。 FirebaseUI documentation 解释说这需要升级传递依赖。按照文档中的说明,您应该添加这些依赖项:

    compile 'com.android.support:customtabs:26.1.0'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.android.support:palette-v7:26.1.0'
    

    (2) 您包括所有 Google Play 服务:

    compile 'com.google.android.gms:play-services:11.6.0'
    

    这会不必要地增加您的 APK 大小和构建时间,并且会导致您的应用超过旧设备上的 65K 方法引用限制。最好只包含您需要的特定 API,例如 play-services-auth。 (APIs here列表)

    (3) 您的 build.gradle 没有指定 buildToolsVersion。我不知道使用什么默认值。指定一个更安全,例如:

    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    

    【讨论】:

    • 我仍然遇到同样的错误。 Google 登录工作正常,但电话身份验证不行。
    • @Taimoor:请更新您的帖子以在您进行更改后显示您的 build.gradle 文件。
    【解决方案2】:

    经过大量搜索,终于找到了我自己的问题的答案

    根据@Bob 的三个建议,我在我的 App Level Build Gradle 中又添加了一件事

    compile ('com.google.firebase:firebase-core:11.4.2'){
        exclude group: 'com.google.firebase:firebase-analytics:9.0.0'
    }
    compile ('com.google.firebase:firebase-auth:11.4.2'){
        exclude group: 'com.google.firebase:firebase-analytics:9.0.0'
    }
    

    避免冲突。 现在一切正常。

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 2018-02-21
      • 2021-03-16
      • 2017-12-11
      • 1970-01-01
      • 2021-06-16
      • 2020-01-24
      • 2021-07-13
      • 1970-01-01
      相关资源
      最近更新 更多