как решить не удалось найти явную активность в 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/AndroidManifest.xml.
раньше у меня нет kickoffactivity в этом файле манифеста, я не знаю причины,но теперь у меня есть это.Я не думаю, что добавление его вручную в файл манифеста приложения будет работать.