将变量从“活动”发送到“BroadcastReceiver”。

时间:2015-05-27 19:11:52

标签: android broadcastreceiver download-manager

我需要将一个变量从Activity发送到在Manifest上注册的BroadcastReceiver

我的情景:

我有一个文件列表,可以由用户下载,当他点击应用程序调用{​​{1}}时,会在数据库中放置一个标记“PENDENT”。此列表由DownloadManager

管理

在我的Activity我已使用过滤器AndroidManifest注册BroadcastReceiver,当我的android.intent.action.DOWNLOAD_COMPLETE被调用时,我想将此注册表从“PENDENT”更改为“DOWNLOADED”

观察:也许我的方法不好,如果是这样的话,我会接受消化。

提前致谢!

3 个答案:

答案 0 :(得分:0)

BroadcastReceiver收到Intent。该变量可以包含在Intent

以下是创建后台服务并传递Intent的指南。 https://developer.android.com/training/run-background-service/create-service.html

答案 1 :(得分:0)

对于您的活动本身存储和管理的文件列表,可能不是最佳选择。将数据列表保存在与Activity和BroadcastReceiver分开的某个类中可能更安全 - 可能是某种将数据保存到文件系统的IntentService。然后,您的Activity和BroadcastReceiver都可以使用IntentService来管理数据。

答案 2 :(得分:0)

你应该看看downloadManager在入队时返回的downloadedId。你可以这样做:

long downloadId = manager.enqueue(request);

然后你可以将downloadId存储在你的数据库中,你可以通过查询onReceive的IntentExtras上的downloadedId数据来获取下载的文件。您可以使用以下方式获取额外信息:

Bundle extras = intent.getExtras();
Long downloaded_id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID);

希望这有帮助。