I am trying to create a Platform Channel in a Flutter project to access Android-specific java code. I am creating a new Flutter Application project in Android Studio and following this tutorial which mentions:
1- Navigate to the directory holding your Flutter app, and select the android folder inside it. Click OK.
2- Open the MainActivity.java file located in the java folder in the Project view.
However, the project only contains MainActivity.kt and not Java:
I tried creating a new activity inside the java folder manually by using context menu>New>Activity but it doesn't work.
EDIT:
The best solution for this (if you can create a new project) is to uncheck "Include Kotlin support for Android code" when you are setting up the project. This automatically creates MainActivity.java. The same goes for Objective-C and Swift. If you want to use Objective-C, uncheck "Include Swift support for iOS code"
If you are here because you are following the steps for setting up firebase_messaging, you can look at this answer and just create the Application.kt
file (instead of Java) next to your MainActivity.kt
file. Here it is:
package com.example.yourapp
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
override fun registerWith(registry: PluginRegistry?) {
io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}