gpt4 book ai didi

android - 处理服务上的 onActivityResult

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:45 26 4
gpt4 key购买 nike

所以我有一个简单的问题,如果此 Activity 是从同一服务(使用 Intent )启动的,是否可以在服务中处理方法 onActivityResult()?

在我的案例中,我想启动 SpeechRegnition,说话,并在服务上获取结果,一切都在后台(主要服务从小部件开始),

谢谢。

最佳答案

感谢最近的投票,不管是谁。我在 2012 年给出的上一个答案完全是胡说八道,所以我决定写一个合适的答案。

您不能在服务中处理 Activity 结果,但您可以将从 onActivityResult() 检索到的任何数据传递给服务。

如果您的服务已经在运行,您可以使用处理事件的新 Intent 调用 startService(),就像这样

@Override
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CODE && resultCode == RESULT_OK) {
notifyService(data);
}
}

private void notifyService(final Intent data) {
final Intent intent = new Intent(this, MyService.class);
intent.setAction(MyService.ACTION_HANDLE_DATA);
intent.putExtra(MyService.EXTRA_DATA, data);
startService(intent);
}

并处理服务中的操作。如果已经在运行则不会重启,否则会启动

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
final String action = intent.getAction();
if (action != null) {
switch (action) {
case ACTION_HANDLE_DATA:
handleData(intent.getParcelableExtra(EXTRA_DATA));
// Implement your handleData method. Remember not to confuse Intents, or even better make your own Parcelable
break;
}
}
}
return START_NOT_STICKY;
}

关于android - 处理服务上的 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608236/

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