Trying to call Android broadcaster in Flutter project

Viewed 343

I am trying to fetch continous location updates when the application goes to background in Flutter project. Below code does not call the receiver at all.

Below code navigate from .dart file to MainAcitivty.java file.

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);
  }

In 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);
      }
    }
}

In Manifest.XML i had added receiver -

 <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>
0 Answers
Related