Флаттер, вызывающий MethodChannel и EventChannel вне MainActivity - PullRequest
0 голосов
/ 25 апреля 2020

Я много искал, но не смог решить мою проблему. Я хочу отправить данные из нативного Android во флаттер через MethodChannel или EventChannel . Я написал класс NotificationGrabber , который расширяет NotificationListenerService , чтобы перехватывать уведомления на Android. Переопределив метод onNotificationPosted , я успешно перехватываю входящие уведомления. Сейчас я пытаюсь отправить эти уведомления во Flutter с помощью MethodChannel или EventChannel , но для этих конструкторов требуется BinaryMessenger . Я вижу из различных руководств, которые используют flutterView в качестве BinaryMessenger (поправьте меня, если я ошибаюсь). Поскольку метод onNotificationsPosted отсутствует в MainActivity, как я могу это сделать из своего класса NotificationGrabber? Как я могу использовать другой правильный BinaryMessenger? Спасибо всем!

public class NotificationGrabber extends NotificationListenerService {
    private static final String CHANNEL = "mynotifications/getnotifications";
    private String TAG = this .getClass().getSimpleName() ;

    @Override
    public void onNotificationPosted (StatusBarNotification sbn) {
        Log. d ( TAG , "onNotificationPosted" ) ;
        sendNotificationsToFlutter(sbn);

    }

    private void sendNotificationsToFlutter(StatusBarNotification sbn) {
        Gson tempGson = new Gson();

        String jsonNotifications = tempGson.toJson(sbn);

        MethodChannel channel = new MethodChannel( <What could I put here?>, CHANNEL);

        channel.invokeMethod("returnedNotification", jsonNotifications );

    }
    .
    .
    .
    .
}
...