我需要将一个变量从Activity
发送到在Manifest上注册的BroadcastReceiver
。
我的情景:
我有一个文件列表,可以由用户下载,当他点击应用程序调用{{1}}时,会在数据库中放置一个标记“PENDENT”。此列表由DownloadManager
在我的Activity
我已使用过滤器AndroidManifest
注册BroadcastReceiver
,当我的android.intent.action.DOWNLOAD_COMPLETE
被调用时,我想将此注册表从“PENDENT”更改为“DOWNLOADED”
观察:也许我的方法不好,如果是这样的话,我会接受消化。
提前致谢!
答案 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);
希望这有帮助。