Попытка вызвать Android вещатель в проекте Flutter - PullRequest
2 голосов
/ 03 марта 2020

Я пытаюсь получить постоянные обновления местоположения, когда приложение переходит в фоновый режим в проекте Flutter. Приведенный ниже код вообще не вызывает получателя.

Ниже по коду осуществляется переход от файла .dart к файлу MainAcitivty. java.

static const platform = const MethodChannel('samples.flutter.dev/battery');


  Future<void> getBatteryLevel() async {
    String batteryLevel;
    try {
      final int result = await platform.invokeMethod('getBatteryLevel');
      batteryLevel = 'Battery level at $result % .';
    } on PlatformException catch (e) {
      batteryLevel = "Failed to get battery level: '${e.message}'.";
    }

   print("battery level" +batteryLevel);
  }

В MainActivity. java

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

    new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
            .setMethodCallHandler(
                    (call, result) -> {
                      // Note: this method is invoked on the main thread.
                      // TODO
                      if (call.method.equals("getBatteryLevel")) {
                        int batteryLevel = getlocation();
                        if (batteryLevel != -1) {
                          result.success(batteryLevel);
                        } else {
                          result.error("UNAVAILABLE", "Battery level not available.", null);
                        }
                      } else {
                        result.notImplemented();
                      }
                    }

            );
  }


  private int getlocation() {

    BroadcastReceiver logoutReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
        Log.i("onReceive","Logout in progress");
        finish();
      }
    };
    Log.d("logoutReceiver","logoutReceiver" + logoutReceiver);

    return 1;
  }

  public class GpsConnectorReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

      if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
        Intent pushIntent = new Intent(context, ConnectivityCheck.class);
        context.startService(pushIntent);
      }
    }
}

В Манифесте. XML Я добавил получателя -

 <receiver
            android:name=".Util.GpsConnectorReceiver"
            android:enabled="true">
            <intent-filter>
                <!-- Intent filters for broadcast receiver -->
                <action android:name="android.location.PROVIDERS_CHANGED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
...