как решить не удалось найти явную активность в firebase AuthUi?

при работе с Firebase UI я не могу найти явный класс активности com.огневая база.пользовательский интерфейс.автор.KickoffActivity

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_main);
    FirebaseApp.initializeApp(this);
    mAuth=FirebaseAuth.getInstance();
    mAuthListner=new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user=firebaseAuth.getCurrentUser();
            if(user!=null){
                Toast.makeText(getApplicationContext(),"Sign in success",Toast.LENGTH_SHORT).show();

            }
            else {
                startActivityForResult(AuthUI.getInstance()
                        .createSignInIntentBuilder()
                        .setIsSmartLockEnabled(false)
                        .setProviders(AuthUI.EMAIL_PROVIDER,AuthUI.GOOGLE_PROVIDER).build(),
                        RC_SIGN_IN);
            }
        }
    };
}

полное сообщение об ошибке

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.flamanco.trackme/com.firebase.ui.auth.KickoffActivity}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult

добавлены зависимости от app/.файл gradle

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.firebaseui:firebase-ui-auth:1.1.1'
}

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

также добавлен плагин в build gradle

classpath 'com.google.gms:google-services:3.0.0'

наконец, я добавил отпечаток SHA1 в свой консольный проект firebase.

мне нужно добавить auth.начальная активность в файле манифеста

4 ответов


android.содержание.ActivityNotFoundException: не удалось найти явное занятие {com.образец.flamanco.trackme / com.огневая база.пользовательский интерфейс.автор.KickoffActivity}; вы объявили об этом в своем AndroidManifest.в XML? на андроид.приложение.Аппаратура.checkStartActivityResult

вам нужно объявить активность в AndroidManifest.в XML

откройте файл манифеста и добавьте KicoffActivity.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="auto">
<activity
            android:name="KickoffActivity"/>
</manifest>

кроме того, я не уверен, что у вас есть первоначальный FirebaseApp дважды здесь..

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_main);
    FirebaseApp.initializeApp(this);
}

как правило, он должен быть инициализирован только один раз в классе приложения , в onCreate() метод.

создать новый класс приложений..

public class YourApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseApp.initializeApp(this);
    }
}

и добавьте то же самое в манифест,

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="auto">
<application
        android:name="YourApplicationClass"
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/MyMaterialTheme.Base">
       <activity
        android:name="KickoffActivity"/>
</application>
</manifest>

ручное добавление действия KickoffActivity в манифест не является правильным решением. Это должно быть сделано для вас. Если вы вручную добавите KickoffActivity, вам придется добавить еще одно действие и еще одно и так далее. Мне случилось:

tools:node="replace">

в моем манифесте. Что предотвращает любое слияние манифеста. Удалил его, и с тех пор он работал нормально.

после этого вы можете получить некоторые другие ошибки слияния, такие как дубликаты тегов и т. д.. Но ошибка будет другой и скажет вам, что делать сейчас. У меня был случай тега, используемого дважды в моем и в объединенном манифесте, поэтому мне сказали добавить:

tools:replace="android:label"

который исправил это тоже.


убедитесь, что вы объявили свой KickoffActivity правильно AndroidManifest.в XML as

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.xxx.xxx">
<application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <activity android:name=".KickoffActivity">
        </activity>
    </application>

</manifest>

особенно проверьте атрибут name, если у вас есть активность в пакете, скажите "тест", а затем тебе придется измениться. атрибут name в виде

<activity android:name=".test.KickoffActivity">
            </activity>

Если все в порядке с AndroidManifest.в XML, Я бы предложил обновить ваши библиотеки, как указано Дейвидас.

вы можете проверить Примечания к выпуску FirebaseUI здесь https://github.com/firebase/FirebaseUI-Android/releases

также обновите другие библиотеки firebase до

 compile 'com.google.firebase:firebase-core:11.0.4' 
 compile 'com.google.firebase:firebase-auth:11.0.4'

наконец, я полностью переустановил Android studio до последней версии, обновил все, включая

  • сервис Google play
  • библиотеки firebase
  • версия gradle
  • Гугл repositoris

и я начал новый проект с самого начала и работал без ошибок. существует много действий, которые добавляются автоматически при добавлении зависимостей AUTHUI. эти деятельности включают в себя kickoffactivity, recoverpasswordactivity, registerEmailActivity и т. д Я могу проверить, перейдя в path

/project/module/build/intermediates/manifests/full/debug/And‌​roidManifest.xml.

раньше у меня нет kickoffactivity в этом файле манифеста, я не знаю причины,но теперь у меня есть это.Я не думаю, что добавление его вручную в файл манифеста приложения будет работать.