gpt4 book ai didi

android - 如何在 Android 服务中启动没有标志 FLAG_ACTIVITY_NEW_TASK 的 Intent ?

转载 作者:太空狗 更新时间:2023-10-29 14:59:30 27 4
gpt4 key购买 nike

我正在尝试从自定义软键盘连接到不同的 Activity 。我需要键盘下方的 Activity 允许发送数据,而无需 Activity 创建自身的新实例。例如:如果键盘在消息传递应用程序上方,我想发送该应用程序数据而不丢失用户正在输入的当前对话。我目前有以下代码将数据发送到 Activity 。

  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 时,如何防止键盘下方的当前 Activity 自行重置?或者更简单地说,如何在不设置 FLAG_ACTIVITY_NEW_TASK 标志的情况下从服务发送 Intent ?

最佳答案

你不能真的那样做。 Service 在没有“启动它”的情况下无法将数据传递给 Activity。你不想那样做。您想要将数据传递给“已经开始”的 Activity。有两种方法可以做到这一点:

  1. 使用绑定(bind)的服务。将 Activity 绑定(bind)到 ServiceActivity 然后可以调用 Service 上的方法(使用 AIDL)并接收返回的数据。

  2. 使用 BroadcastReceiver。让 Activity 创建并注册 BroadcastReceiver 以监听返回的数据。在您的 Service 中,当您想将数据传输到 Activity 时,发送广播 Intent

关于android - 如何在 Android 服务中启动没有标志 FLAG_ACTIVITY_NEW_TASK 的 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com