Android 找不到KickoffActivity Firebase

Android 找不到KickoffActivity Firebase,android,firebase,android-gradle-plugin,firebase-authentication,firebaseui,Android,Firebase,Android Gradle Plugin,Firebase Authentication,Firebaseui,我正在使用这个网站建立一个聊天应用程序,只是为了学习的目的 不幸的是,我最后总是出错。我发现了这个问题,但没有一个答案解决了我的问题 这是错误消息: 原因:android.content.ActivityNotFoundException:找不到显式活动类{com.myapp.user.chatatwork/com.firebase.ui.auth.KickoffActivity};您是否在AndroidManifest.xml中声明了此活动 我的AndroidManifest.xml如下所示:

我正在使用这个网站建立一个聊天应用程序,只是为了学习的目的

不幸的是,我最后总是出错。我发现了这个问题,但没有一个答案解决了我的问题

这是错误消息:

原因:android.content.ActivityNotFoundException:找不到显式活动类{com.myapp.user.chatatwork/com.firebase.ui.auth.KickoffActivity};您是否在AndroidManifest.xml中声明了此活动

我的
AndroidManifest.xml
如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.myapp.user.chatatwork">
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
    android:supportsRtl="true"
    tools:replace="android:value"
    >


    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
</application>
编辑

这是Firebase中的
KickoffActivity
类:

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class KickoffActivity extends HelperActivityBase {
    private static final String TAG = "KickoffActivity";
    private static final String IS_WAITING_FOR_PLAY_SERVICES = "is_waiting_for_play_services";
    private static final int RC_PLAY_SERVICES = 1;

    private boolean mIsWaitingForPlayServices = false;

    public static Intent createIntent(Context context, FlowParameters flowParams) {
        return ActivityHelper.createBaseIntent(context, KickoffActivity.class, flowParams);
    }

    @Override
    protected void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);

        if (savedInstance == null || savedInstance.getBoolean(IS_WAITING_FOR_PLAY_SERVICES)) {
            if (isOffline()) {
                Log.d(TAG, "No network connection");
                finish(ErrorCodes.NO_NETWORK,
                       IdpResponse.getErrorCodeIntent(ErrorCodes.NO_NETWORK));
                return;
            }

            boolean isPlayServicesAvailable = PlayServicesHelper.makePlayServicesAvailable(
                    this,
                    RC_PLAY_SERVICES,
                    new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface dialog) {
                            finish(ResultCodes.CANCELED,
                                   IdpResponse.getErrorCodeIntent(
                                           ErrorCodes.UNKNOWN_ERROR));
                        }
                    });

            if (isPlayServicesAvailable) {
                SignInDelegate.delegate(this, mActivityHelper.getFlowParams());
            } else {
                mIsWaitingForPlayServices = true;
            }
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        // It doesn't matter what we put here, we just don't want outState to be empty
        outState.putBoolean(ExtraConstants.HAS_EXISTING_INSTANCE, true);
        outState.putBoolean(IS_WAITING_FOR_PLAY_SERVICES, mIsWaitingForPlayServices);
        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_PLAY_SERVICES) {
            if (resultCode == ResultCodes.OK) {
                SignInDelegate.delegate(this, mActivityHelper.getFlowParams());
            } else {
                finish(ResultCodes.CANCELED,
                       IdpResponse.getErrorCodeIntent(ErrorCodes.UNKNOWN_ERROR));
            }
        } else {
            SignInDelegate delegate = SignInDelegate.getInstance(this);
            if (delegate != null) delegate.onActivityResult(requestCode, resultCode, data);
        }
    }

    /**
     * Check if there is an active or soon-to-be-active network connection.
     *
     * @return true if there is no network connection, false otherwise.
     */
    private boolean isOffline() {
        ConnectivityManager manager =
                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        return !(manager != null
                && manager.getActiveNetworkInfo() != null
                && manager.getActiveNetworkInfo().isConnectedOrConnecting());
    }
}
更改此项:

implementation 'com.google.firebase:firebase-core:10.0.1'
compile 'com.firebaseui:firebase-ui:1.1.1'
至最新版本:

implementation 'com.firebaseui:firebase-ui-auth:3.3.0'
implementation 'com.firebaseui:firebase-ui-database:3.3.0'
implementation 'com.google.firebase:firebase-core:12.0.1'
更改此项:

implementation 'com.google.firebase:firebase-core:10.0.1'
compile 'com.firebaseui:firebase-ui:1.1.1'
至最新版本:

implementation 'com.firebaseui:firebase-ui-auth:3.3.0'
implementation 'com.firebaseui:firebase-ui-database:3.3.0'
implementation 'com.google.firebase:firebase-core:12.0.1'
出现以下错误:

Caused by: android.content.ActivityNotFoundException:
Unable to find explicit activity class {com.myapp.user.chatatwork/com.firebase.ui.auth.KickoffActivity};
have you declared this activity in your AndroidManifest.xml?
准确地告诉你问题是什么。您正在使用名为
KickoffActivity
的活动,该活动未在
AndroidManifest.xml
文件中声明。要解决此问题,请在
标记后面添加以下代码行

<activity android:name="com.firebase.ui.auth.KickoffActivity"/>

正如Peter在回答中提到的,将Firebase和Firebase UI依赖项更新到最新版本是一种非常好的做法。

以下错误:

Caused by: android.content.ActivityNotFoundException:
Unable to find explicit activity class {com.myapp.user.chatatwork/com.firebase.ui.auth.KickoffActivity};
have you declared this activity in your AndroidManifest.xml?
准确地告诉你问题是什么。您正在使用名为
KickoffActivity
的活动,该活动未在
AndroidManifest.xml
文件中声明。要解决此问题,请在
标记后面添加以下代码行

<activity android:name="com.firebase.ui.auth.KickoffActivity"/>


正如Peter在回答中提到的那样,将Firebase和Firebase UI依赖项更新到最新版本是一个很好的做法。

您同步、清理和重建了吗?是的,我完成了所有这些。什么都没用。它说“清单合并失败”,在日志中,有我上面提到的错误。
kickoffActivity
是firebase ui auth包中的一个类,可在此处找到:。每当您在项目的gradle文件中添加依赖项时,该库的活动都将添加到清单文件中。(此处详细说明:)这就是为什么在项目清单中添加库不起作用,最好的办法是更新所有内容。@Blnpwr您想在firebaseui中使用什么?(身份验证还是数据库?)活动位于firebaseui身份验证中,如果您只想使用数据库,请使用此
compile'com.firebaseui:firebaseui数据库:3.3.0'
而不是
compile'com.firebaseui:firebaseui:3.3.0'
,您不会遇到该错误“更新所有内容”是什么意思。在您的回答中,您有最新版本的firebase。还有什么需要更新的吗?我不明白。你同步、清理和重建了吗?是的,我做了所有这些。什么都没用。它说“清单合并失败”,在日志中,有我上面提到的错误。
kickoffActivity
是firebase ui auth包中的一个类,可在此处找到:。每当您在项目的gradle文件中添加依赖项时,该库的活动都将添加到清单文件中。(此处详细说明:)这就是为什么在项目清单中添加库不起作用,最好的办法是更新所有内容。@Blnpwr您想在firebaseui中使用什么?(身份验证还是数据库?)活动位于firebaseui身份验证中,如果您只想使用数据库,请使用此
compile'com.firebaseui:firebaseui数据库:3.3.0'
而不是
compile'com.firebaseui:firebaseui:3.3.0'
,您不会遇到该错误“更新所有内容”是什么意思。在您的回答中,您有最新版本的firebase。还有什么需要更新的吗?我不明白。请共享您的
KickoffActivity
类的一部分,包括
程序包
名称和更改的
AndroidManifest.xml
文件。请通过添加必要的代码来编辑您的问题。据我所知,应该自动添加此
启动活动
,因为我使用的是Firebase,使用Firebase时会自动实现许多其他类。我没有任何KickoffActivity类。如果您使用Firebase,这并不意味着
KickoffActivity
活动将自动添加到
AndroidManifest.xml
文件中。是的,你有,或者这个错误不会出现。检查
com.firebase.ui.auth
pacage以获取KickoffActivity.java文件。你能分享它的内容和更改的
AndroidManifest.xml
文件吗?我用KickoffActivity类Alex编辑了这个问题。因为
class KickoffActivity扩展了HelperActivityBase
这意味着
KickoffActivity
类是一个活动。为了使其工作,您需要在
AndroidManifest.xml
文件中声明此活动。您是否在
AndroidManifest.xml
文件中添加了这一行?您还可以确认
“com.firebase.ui.auth”
KickoffActivity.java
文件的正确包吗?请共享您的
KickoffActivity
类的一个示例,包括
包名和更改的
AndroidManifest.xml
文件。请通过添加必要的代码来编辑您的问题。据我所知,应该自动添加此
启动活动
,因为我使用的是Firebase,使用Firebase时会自动实现许多其他类。我没有任何KickoffActivity类。如果您使用Firebase,这并不意味着
KickoffActivity
活动将自动添加到
AndroidManifest.xml
文件中。是的,你有,或者这个错误不会出现。检查
com.firebase.ui.auth
pacage以获取KickoffActivity.java文件。你能分享它的内容和修改过的
AndroidManifest.xml
文件吗?我用KickoffActivity类Alex编辑了这个问题。因为
class KickoffActivity扩展了HelperActivityBase
这意味着
KickoffActivity
类是一种行为