Ahm*_*gdi 2 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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在升级到最新版本的 flutter 后,firebase_messaging他们在文档中提到我不再需要这个,我可以恢复正常MainACtivity,我就这样做了。这是MainActivity文件:
package com.deliveryrunner.vendor
import io.flutter.embedding.android.FlutterActivity
class MainActivity : FlutterActivity() {}
Run Code Online (Sandbox Code Playgroud)
请注意,AndroidManifest.xml每当我更改文件时,我都会更改条目:
<application
android:name=".Application"
Run Code Online (Sandbox Code Playgroud)
<application
android:name=".MainActivity"
Run Code Online (Sandbox Code Playgroud)
最后,升级后,每当我运行应用程序时,我都会收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
小智 7
请从应用程序标签中删除此行
<application
android:name=".MainActivity"
Run Code Online (Sandbox Code Playgroud)
或者
android:name="io.flutter.embedding.android.FlutterFragmentActivity"
Run Code Online (Sandbox Code Playgroud)
在活动标签内添加该行
<activity
android:name=".MainActivity"
Run Code Online (Sandbox Code Playgroud)
类似于这段代码
<application
android:label="..."
android:icon="@mipmap/logo">
<activity
android:name=".MainActivity"
android:exported="true"
Run Code Online (Sandbox Code Playgroud)
这段代码适用于我的情况。
请从应用程序标签中删除此行
<application
android:name=".MainActivity"
Run Code Online (Sandbox Code Playgroud)
在活动标签内添加该行
<activity
android:name=".MainActivity"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |