【发布时间】:2014-04-22 05:13:34
【问题描述】:
我正在尝试将一个对象传递给一个 BroadcastReceiver,它会在下载完成后执行一些操作。如何从我的活动中访问 BroadcastReceiver 的 onReceive 方法中的 Intent 对象?现在我的活动中有这个:
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
我的 BroadcastReceiver 中有这个,当下载完成时它会做一些事情:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
一切正常,我的 BroadcastReceiver 会在下载完成后执行我想要的操作。但现在我想将一个对象从我的活动传递给广播接收器。通常,我只会创建一个 Intent 并将对象添加到 Intent 中。但是,我没有在我的代码中创建 Intent,因为 BroadcastReceiver 使用 Context.DOWNLOAD_SERVICE 响应下载。
在我的 BroadcastReceiver 中,我想在这里的 onReceive() 方法中从 Intent 对象获取数据:
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
如何将数据从我的活动传递到这个 Intent 对象?我如何访问它?我尝试使用getIntent().putExtra("object", object),但它似乎与 BroadcastReceiver 的 onReceive 方法中使用的 Intent 不同,因为我得到了一个 nullPointerException
编辑:这是我在 AndroidManifest.xml 中的相关代码
<receiver
android:name="com.android.devon.appfrenzy.DownloadReceiver"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
【问题讨论】: