带有颤振回调的警报服务

时间:2018-08-20 22:10:24

标签: android dart flutter alarmmanager android-workmanager

我正在尝试创建一个带有回调的警报服务。我尝试使用现有的alarm_manager进行抖动,但无法编译。我需要定期检查用户在后台的位置,并在满足某些条件时提醒用户。警报位于Flutter(Dart回调方法)上。

我使用MethodChannel创建了一个针对飞镖代码的回调。但是,当我尝试将methodchannel传递给警报服务时,我不确定如何将FlutterAcitvity传递给它。

public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);
    MethodChannel trigger = new MethodChannel(getFlutterView(), "service:BackgroundTrigger");
    trigger.setMethodCallHandler(new CallBackWorker(getFlutterView()));
}

class CallBackWorker implements MethodCallHandler {
    FlutterView view;

    CallBackWorker(FlutterView view) {
        this.view = view;
    }

    @Override
    public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
        AlarmManager mgr=(AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        Intent i=new Intent(getApplicationContext(), MyService.class);
        i.putExtra("FlutterView",getFlutterView()); //This is the problem.
        PendingIntent alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0);

        mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime() +
                        60 * 1000, alarmIntent);
    }
}

}

在上面的代码中,当用户单击按钮时,将触发service:BackgroundTrigger,它将通过调用CallBackWorker将其注册到警报服务。

现在要调用Dart回调方法,我需要访问警报服务中的flutter视图。我不确定如何通过它。

如果有一种方法可以从WorkManager调用dart回调,那会更好。

任何帮助将不胜感激。

0 个答案:

没有答案