Flutter android build fails due to the use of FlutterFragmentActivity instead of FlutterActivity

Viewed 235

I have been working on the app for quite some time now with this snippet in MainActivity.java


import android.content.Intent;
import android.util.Log;

import androidx.annotation.NonNull;

import com.ickebord.ariana.controllers.ReminderController;
import com.ickebord.ariana.utils.ReminderRawDataConstants.Keys;

import java.util.HashMap;

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {

  private static final String CHANNEL = "ickebordChannel";
  private ReminderController controller;
  private String payload;
  public static MethodChannel.Result result;

  @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
    GeneratedPluginRegistrant.registerWith(flutterEngine);

    payload = getIntent().getStringExtra(Keys.PAYLOAD);

    new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
    .setMethodCallHandler(((call, result) -> {
      controller = new ReminderController(this);

      try{
        switch(call.method){
          case "notification_payload":
            if(payload != null){
              result.success(payload);
            }
            break;
          case "add_reminder":
            long reminderId = controller.addReminder((HashMap<String, String>) call.arguments);
            result.success(reminderId);
            break;
          case "get_reminder":
            HashMap<String, String> reminderData = controller.getReminder((int) call.arguments);
            result.success(reminderData);
            break;
          case "delete_reminder":
            int deletedRowId = controller.deleteReminder((int) call.arguments);
            result.success(deletedRowId);
            break;
          case "get_ringtone":
            MainActivity.result = result;
            Intent intent = new Intent(this, RingtoneActivity.class);
            startActivity(intent);
            break;
          default:
            result.error("UNAVAILABLE", "Unknown method call", null);
        }
      }
      catch(Exception e){
        result.error("FAILED", e.getMessage(), e);
      }
    }));
  }
}

But now I wanna make use of this plugin called local_auth which requires me to extend MainActivity from FlutterFragmentActivity instead of FlutterActivity.

Which causes my build to fail with the following errors:

  private ReminderController controller;
          ^
  symbol:   class ReminderController
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:27: error: package MethodChannel does not exist
  public static MethodChannel.Result result;
                             ^
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:39: error: cannot find symbol
    payload = getIntent().getStringExtra(Keys.PAYLOAD);
                                         ^
  symbol:   variable Keys
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:41: error: cannot find symbol
    new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
        ^
  symbol:   class MethodChannel
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:43: error: cannot find symbol
      controller = new ReminderController(this);
                       ^
  symbol:   class ReminderController
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:46: error: illegal parenthesized expression
        switch(call.method){
              ^
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:53: error: cannot find symbol
            long reminderId = controller.addReminder((HashMap<String, String>) call.arguments);
                                                      ^
  symbol:   class HashMap
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:57: error: cannot find symbol
            HashMap<String, String> reminderData = controller.getReminder((int) call.arguments);
     symbol:   class HashMap
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:66: error: cannot find symbol
            Intent intent = new Intent(this, RingtoneActivity.class);
            ^
  symbol:   class Intent
  location: class MainActivity
/Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MainActivity.java:66: error: cannot find symbol
            Intent intent = new Intent(this, RingtoneActivity.class);
                                ^
  symbol:   class Intent
  location: class MainActivity
Note: /Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/MyApplication.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/taha/Documents/ickebord_ari091221/android/app/src/main/java/com/ickebord/ariana/controllers/DbController.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
10 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 36s
Exception: Gradle task assembleDebug failed with exit code 1
Exited

I'm not familiar with Java code at all, so no clue how to approach to solve this! Thanks

0 Answers
Related