java - com.deliveryrunner.vendor.MainActivity 无法转换为 android.app.Application

标签 java android flutter firebase-cloud-messaging

我有一个用 flutter 制作的 android 应用程序,在旧版本中我使用了 firebase_messaging 这需要我将我的 MainActivity 文件更改为 Application 进行了下面提到的一些编辑,以便能够处理后台消息。当时效果很好。

这是旧的 Application 文件:

package com.deliveryrunner.vendor;

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

public class Application extends FlutterApplication implements PluginRegistrantCallback {

    @Override
    public void onCreate() {
        super.onCreate();
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
    }

    @Override
    public void registerWith(PluginRegistry registry) {
        FirebaseCloudMessagingPluginRegistrant.registerWith(registry);
    }

}

现在,在升级到最新版本的 flutter 和 firebase_messaging 之后,他们在文档中提到我不再需要它了,我可以回到正常的 MainACtivity 和我做到了。这是 MainActivity 文件:

package com.deliveryrunner.vendor

import io.flutter.embedding.android.FlutterActivity

class MainActivity : FlutterActivity() {}

请注意,每当我更改文件时,我都会更改 AndroidManifest.xml 中的条目:

    <application
        android:name=".Application"
    <application
        android:name=".MainActivity"

最后,升级后,每当我运行应用程序时,我都会收到此错误:

E/AndroidRuntime(14596): FATAL EXCEPTION: main
E/AndroidRuntime(14596): Process: com.deliveryrunner.vendor, PID: 14596
E/AndroidRuntime(14596): java.lang.RuntimeException: Unable to instantiate application com.deliveryrunner.vendor.MainActivity: java.lang.ClassCastException: com.deliveryrunner.vendor.MainActivity cannot be cast to android.app.Application
E/AndroidRuntime(14596):    at android.app.LoadedApk.makeApplication(LoadedApk.java:1244)
E/AndroidRuntime(14596):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683)
E/AndroidRuntime(14596):    at android.app.ActivityThread.access$1300(ActivityThread.java:237)
E/AndroidRuntime(14596):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
E/AndroidRuntime(14596):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(14596):    at android.os.Looper.loop(Looper.java:223)
E/AndroidRuntime(14596):    at android.app.ActivityThread.main(ActivityThread.java:7656)
E/AndroidRuntime(14596):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14596):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/AndroidRuntime(14596):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/AndroidRuntime(14596): Caused by: java.lang.ClassCastException: com.deliveryrunner.vendor.MainActivity cannot be cast to android.app.Application
E/AndroidRuntime(14596):    at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
E/AndroidRuntime(14596):    at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
E/AndroidRuntime(14596):    at android.app.Instrumentation.newApplication(Instrumentation.java:1158)
E/AndroidRuntime(14596):    at android.app.LoadedApk.makeApplication(LoadedApk.java:1236)
E/AndroidRuntime(14596):    ... 9 more


最佳答案

请从应用程序标签中删除这一行

<application
    android:name=".MainActivity"

或者

    android:name="io.flutter.embedding.android.FlutterFragmentActivity"

在 Activity 标签内添加一行

<activity
    android:name=".MainActivity"

类似这段代码

 <application
    android:label="..."
    android:icon="@mipmap/logo">
    <activity
        android:name=".MainActivity"
        android:exported="true"
    

此代码适用于我的情况。

关于java - com.deliveryrunner.vendor.MainActivity 无法转换为 android.app.Application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69839828/

相关文章:

dart - 如何决定 main.dart 文件中的默认导航以及如何根据条件检查更改它?

java - 在 JTable 上禁用 CTRL+C(双击单元格后)

java - 升级到 Gradle 5 后的 Querydsl 注释处理器问题

java - 使用 Spark 将内存中生成的 .docx 文件从服务器发送到客户端

Android:在开关上使用 setOnCheckedChangeListener 时,我得到 'Cannot Resolve Symbol Error'

json - 如何在 Flutter 中将对象编码为 json

flutter - 如何在 just_audio 中扩展后流式传输带有额外信息的 mp3 文件

java - 使用泛型将泛型类型的对象添加到 map

android - 在 Android 中重新加载内容 View

android - 如何在 Android Studio 中测试有限的互联网访问