android - 使用 DownloadManager 将数据从 Activity 传递到 BroadcastReceiver

标签 android android-intent

我正在尝试将一个对象传递给 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/

相关文章:

java - Android CalendarView 不显示日期

android - 在 Android 上的 WebView 中缩放 Google map

android - 如何监听我的应用程序和日历应用程序何时收到通知?

android - 测试对 Intent.ACTION_SEND 的调用

android - 使用 Android Intent 打开 PDF 文件

android - 提供始终选择浏览器打开链接的选项

android - java.util.zip.ZipException : duplicate entry during packageAllDebugClassesForMultiDex

php - 将字符串数组发送到 php

java - SQlite WHERE 语句不起作用?

android - Intent 值分别形成包含多个值的 ListView 行