我正在尝试将一个对象传递给 BroadcastReceiver,它会在下载完成后做一些事情。如何从我的 Activity 访问 BroadcastReceiver 的 onReceive 方法中的 Intent 对象?现在我的 Activity 中有这个:
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
我的 BroadcastReceiver 中有这个,它会在下载完成后执行一些操作:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
一切正常,我的 BroadcastReceiver 在下载完成后执行我想要的操作。但现在我想将一个对象从我的 Activity 传递到 BroadcastReceiver。通常,我会创建一个 Intent 并将对象添加到 Intent。但是,我没有在我的代码中创建 Intent,因为 BroadcastReceiver 使用 Context.DOWNLOAD_SERVICE 响应下载。
在我的 BroadcastReceiver 中,我想在此处的 onReceive() 方法中从 Intent 对象获取数据:
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
如何将数据从我的 Activity 传递到此 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>
最佳答案
But now I want to pass an object from my activity to the BroadcastReceiver.
那是不可能的。 BroadcastReceiver
不存在,接收广播时除外。下载完成时,您的整个过程可能已经结束。
欢迎您将某些内容存储在持久位置(SharedPreferences
、数据库、文件)并从 onReceive()
中读取。这是将数据传递给可能尚不存在的进程中不存在的对象的唯一方法。
关于android - 使用 DownloadManager 将数据从 Activity 传递到 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210900/