Android flatter io.flatter.app.flatterActivity';已在单个类型导入中定义

Android flatter io.flatter.app.flatterActivity';已在单个类型导入中定义,android,flutter,background-service,Android,Flutter,Background Service,我正在为Android开发一个颤振应用程序,它每天发送通知。为了保持本地性,我尝试使用Android后台服务实现这一点。我遵循了本教程: 我得到两个错误,第一个是io.flutter.embedding.android.flutravity已经在一个导入类型中定义。据我所知,导致这个问题的原因是有两个类叫做flatterActivity,但我需要这两个类来使用getflatterEngine()和getflatterView()方法。如何从一个类中只导入一个方法? 第二个错误是无法解析“Mai

我正在为Android开发一个颤振应用程序,它每天发送通知。为了保持本地性,我尝试使用Android后台服务实现这一点。我遵循了本教程:

我得到两个错误,第一个是io.flutter.embedding.android.flutravity已经在一个导入类型中定义。据我所知,导致这个问题的原因是有两个类叫做flatterActivity,但我需要这两个类来使用getflatterEngine()和getflatterView()方法。如何从一个类中只导入一个方法?
第二个错误是无法解析“MainActivity”中的方法“getFlatterView”,我认为解决第一个错误可以解决这个问题。
提前感谢您的时间和帮助

已弃用(2020年9月)

弃用:FlatterActivity是新的API,现在取代了此API 班级。查看更多信息 迁移详细信息

为了有利于so解决问题:

  • 删除
    导入io.flatter.app.flatteractivity
    使用
    嵌入.android.activity

  • 使用
    GetFlatterEngine().getDartExecutor().getBinaryMessenger()
    而不是
    GetFlatterView()
    创建并注册
    MethodChannel

     new MethodChannel(getFlutterEngine().getDartExecutor().getBinaryMessenger(), "key_01")
             .setMethodCallHandler(new MethodChannel.MethodCallHandler() {
         @Override
         public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
             if(call.method.equals("startService")){
                 startService();
             }
         }
     });
    
  • 或者,您可以覆盖
    configureflatterengine
    以获取
    flatterengine
    实例,以便创建
    MethodChannel

     new MethodChannel(getFlutterEngine().getDartExecutor().getBinaryMessenger(), "key_01")
             .setMethodCallHandler(new MethodChannel.MethodCallHandler() {
         @Override
         public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
             if(call.method.equals("startService")){
                 startService();
             }
         }
     });