在Android服务中,如果不使用flag\u ACTIVITY\u NEW\u任务,如何启动意向?
我正在尝试通过自定义软键盘连接到不同的活动。我需要键盘下面的活动,以便在不创建新实例的情况下发送数据。例如:如果键盘位于消息传递应用程序上方,我希望在不丢失用户正在键入的当前对话的情况下发送该应用程序数据。我目前有以下代码向活动发送数据在Android服务中,如果不使用flag\u ACTIVITY\u NEW\u任务,如何启动意向?,android,android-intent,service,Android,Android Intent,Service,我正在尝试通过自定义软键盘连接到不同的活动。我需要键盘下面的活动,以便在不创建新实例的情况下发送数据。例如:如果键盘位于消息传递应用程序上方,我希望在不丢失用户正在键入的当前对话的情况下发送该应用程序数据。我目前有以下代码向活动发送数据 Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); //sendIntent.pu
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
//sendIntent.putExtra("thread_id", (long) 1);
sendIntent.setType("image/*");
startActivity(sendIntent);
当我尝试运行它时,我得到了以下明显的错误
E/AndroidRuntime(6129): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
当从键盘服务发送意图时,如何防止键盘下的当前活动自行重置?或者更简单地说,如何在不设置标志“活动”或“新建任务”标志的情况下从服务发送意图?您可以通过多种方式执行此操作,但必须设置标志才能完成任务 如果要创建新实例并关闭当前实例,则需要设置
Intent.FLAG\u ACTIVITY\u CLEAR\u TOP
如果您想在这种情况下重用同一个活动实例,则需要同时设置
Intent.FLAG\u activity\u CLEAR\u TOP
和Intent.FLAG\u activity\u SINGLE\u TOP
,之后它将不会创建另一个活动实例,而是调用onNewIntent()运行新意图的活动的
。您不能这样做。服务
无法在未“启动”的情况下将数据传递给活动
。你不想那样做。您想将数据传递给“已启动”的活动
。有两种方法可以做到这一点:
服务
。让活动
绑定到服务
。活动可以调用服务上的方法(使用AIDL)并接收返回的数据
广播接收器
。让活动
创建并注册一个广播接收器
,以监听返回的数据。在服务
中,当您希望将数据传输到活动
时,发送广播意图
这在大多数情况下都应该是可行的,但在使用Android服务时似乎有不足之处。这个问题有点含糊,看看修订版吧