【问题标题】:How to get a result of PendingIntent.getActivity如何获得 PendingIntent.getActivity 的结果
【发布时间】:2014-04-25 21:51:09
【问题描述】:
我正在使用挂起的意图来启动闹钟(使用 AlarmManager)。我需要根据用户单击放置在其中的 2 个按钮中的哪一个(贪睡或取消)来启动活动的不同结果代码。我如何得到这个结果?不幸的是,在关闭活动上启动了 finish() 方法后,父活动中没有启动 onActivityResult() 方法。在 Android 文档中,它声明
"PendingIntent.getActivity:
检索将启动新活动的 PendingIntent,例如调用 Context.startActivity(Intent)"
我需要 Context.startActivityForResult(Intent) 之类的东西,但用于 Pending Intent。
【问题讨论】:
标签:
android
android-intent
android-activity
alarmmanager
android-pendingintent
【解决方案1】:
PendingIntents 被设计为可以从其他应用程序启动,即不清楚谁应该接收结果。这就是 startActivityForResult() 对 PendingIntent 毫无意义的原因。我的建议是在您完成之前启动的活动时发送一条广播消息
@Override
public void onFinish() {
super.onFinish();
Intent intent = new Intent(YOUR_CUSTOM_ACTION);
// Put data to intent
sendBroadcast(intent);
}
并使用BroadcastReceiver在其他活动中接收结果:
public class ActivityResultReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// Retrieve data from intent
}
}