Приемник Boardcast не работает в Android для проекта Flutter - PullRequest
0 голосов
/ 04 марта 2020

Ниже приведен код, который я использую для использования широковещательного приемника: - То, чего я пытаюсь добиться, это 1) Когда пользователь включает / выключает местоположение, когда приложение находится в фоновом режиме, оно должно транслироваться. Я поставил отладчик, но он не вызывается при переходе приложения в фоновый режим. 2) Получить обновленное местоположение, когда приложение находится в фоновом режиме.

В MainActivity. java

public class MainActivity extends FlutterActivity {
  private static final String CHANNEL = "samples.flutter.dev/battery";
  @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
      GeneratedPluginRegistrant.registerWith(flutterEngine);
    new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
            .setMethodCallHandler(
                    (call, result) -> {
                        GpsLocationReceiver networkstatusreceiver = new GpsLocationReceiver();
                        IntentFilter intent=new IntentFilter ();
                        intent.addAction("android.location.PROVIDERS_CHANGED");
                        registerReceiver(networkstatusreceiver,intent);

                      // Note: this method is invoked on the main thread.
                      // TODO
                    }
            );
  }
}

GpsLocationReceiver. java

public class GpsLocationReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
            Log.d("PROVIDERS_CHANGED null", "PROVIDERS_CHANGED null");

        }
    }
}

Добавлено ниже в manifest.xml

 <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

            <action android:name="android.location.PROVIDERS_CHANGED" />

    <receiver android:name=".GpsLocationReceiver">
        <intent-filter>
            <action android:name="android.location.PROVIDERS_CHANGED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
...