从服务启动应用程序(flatter:Android)

从服务启动应用程序(flatter:Android),android,flutter,Android,Flutter,我在Flitter中创建了一个插件,用来显示聊天头,就像Facebook Messenger一样。从聊天头,我必须打开特定的屏幕。我不知道如何从我的广播接收器启动颤振应用程序。到目前为止,我有以下代码: private BroadcastReceiver createReceiver(final EventChannel.EventSink eventSink){ return new BroadcastReceiver() { @Override publi

我在Flitter中创建了一个插件,用来显示聊天头,就像Facebook Messenger一样。从聊天头,我必须打开特定的屏幕。我不知道如何从我的广播接收器启动颤振应用程序。到目前为止,我有以下代码:

  private BroadcastReceiver createReceiver(final EventChannel.EventSink eventSink){
    return new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
        Bundle b = intent.getExtras();
        if(b != null) {
          HashMap<String, Object> data = (HashMap<String, Object>) b.getSerializable(KEY_DATA);
          boolean showWhenLocked = data.get("SHOW_WHEN_LOCKED") == null ? false : (boolean) data.get("SHOW_WHEN_LOCKED");

          if(showWhenLocked) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
              mActivity.setShowWhenLocked(true);
              mActivity.setTurnScreenOn(true);
            } else {
              Window window = mActivity.getWindow();
              window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
              window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
              window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
            }
          }

          Log.d("ChatheadsPlugin", "BroadcastReceiver onReceive intent for eventSink: " + data);
          eventSink.success(data);
        }
      }
    };
  }
private BroadcastReceiver createReceiver(final EventChannel.EventSink EventSink){
返回新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
Bundle b=intent.getExtras();
如果(b!=null){
HashMap data=(HashMap)b.getSerializable(KEY_数据);
boolean showhenlocked=data.get(“锁定时显示”)==null?false:(boolean)data.get(“锁定时显示”);
如果(选中时显示){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.O\u MR1){
mActivity.setShowWhenLocked(true);
mActivity.setTurnScreenOn(真);
}否则{
Window Window=mActivity.getWindow();
addFlags(WindowManager.LayoutParams.FLAG\u discover\u KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG在锁定时显示);
添加标志(WindowManager.LayoutParams.FLAG\u打开屏幕);
}
}
Log.d(“ChatHeadPlugin”,“BroadcastReceiver onReceive for eventSink:+数据”);
eventSink.success(数据);
}
}
};
}

首先,我想在这里启动应用程序主活动。如果可能的话,我想用“锁定时显示”的可能性来启动它

我可以通过以下方式从Android启动颤振活动:

  • 首先,我在插件中添加了MainActivity,它是覆盖活动的

  • 然后,我创建了新的意图,并使用标志创建了新的活动

    意向意向=新意向(MyService.this、MainActivity.class); intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK|intent.FLAG_ACTIVITY_SINGLE_TOP)

  • 然后像平常一样开始活动

    星触觉(意向)