Java 在单击事件时处理DownloadManager,并从广播接收器启动系统下载应用程序
我有一个从http下载大文件的应用程序。 为了处理这个问题,我使用了Java 在单击事件时处理DownloadManager,并从广播接收器启动系统下载应用程序,java,android,broadcastreceiver,android-download-manager,Java,Android,Broadcastreceiver,Android Download Manager,我有一个从http下载大文件的应用程序。 为了处理这个问题,我使用了DownloadManager 要下载的文件太大,我希望用户能够将应用程序放在后台,并在下载运行时自由使用手机 在我编写的代码中,下载启动并正常工作,但我需要用户在通知栏中单击下载文件的名称时,必须向其显示下载列表(系统应用程序下载-DownloadManager.ACTION\u VIEW\u Downloads) 我想要的是,当浏览器从web下载文件时,我的应用程序将完全像默认浏览器的下载管理器一样工作 您能帮我声明并为Br
DownloadManager
要下载的文件太大,我希望用户能够将应用程序放在后台,并在下载运行时自由使用手机
在我编写的代码中,下载启动并正常工作,但我需要用户在通知栏中单击下载文件的名称时,必须向其显示下载列表(系统应用程序下载-DownloadManager.ACTION\u VIEW\u Downloads
)
我想要的是,当浏览器从web下载文件时,我的应用程序将完全像默认浏览器的下载管理器一样工作
您能帮我声明并为BroadcastReceiver
编码吗?正如我所说,我需要一个始终运行的广播接收器
我试过这么做,但没用:
在我的舱单上有:
<manifest>
<application>
<receiver android:name="com.test.BroadcastReceiverDownloadManager">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"></action>
</intent-filter>
</receiver>
</application>
</manifest>
它有时不处理单击事件,只要正确处理单击事件,应用程序就会以这种方式崩溃:
02-27 19:13:04.098: E/AndroidRuntime(13274): FATAL EXCEPTION: main
02-27 19:13:04.098: E/AndroidRuntime(13274): java.lang.RuntimeException: Unable to start receiver com.my.app.name.services.BroadcastReceiverDownloadManager: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.my.app.name/android.app.DownloadManager}; have you declared this activity in your AndroidManifest.xml?
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2408)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ActivityThread.access$1500(ActivityThread.java:139)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.os.Looper.loop(Looper.java:154)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ActivityThread.main(ActivityThread.java:4944)
02-27 19:13:04.098: E/AndroidRuntime(13274): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 19:13:04.098: E/AndroidRuntime(13274): at java.lang.reflect.Method.invoke(Method.java:511)
02-27 19:13:04.098: E/AndroidRuntime(13274): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-27 19:13:04.098: E/AndroidRuntime(13274): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-27 19:13:04.098: E/AndroidRuntime(13274): at dalvik.system.NativeStart.main(Native Method)
02-27 19:13:04.098: E/AndroidRuntime(13274): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.my.app.name/android.app.DownloadManager}; have you declared this activity in your AndroidManifest.xml?
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1634)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1510)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ContextImpl.startActivity(ContextImpl.java:1100)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
02-27 19:13:04.098: E/AndroidRuntime(13274): at com.my.app.name.services.BroadcastReceiverDownloadManager.onReceive(BroadcastReceiverDownloadManager.java:29)
02-27 19:13:04.098: E/AndroidRuntime(13274): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2397)
02-27 19:13:04.098: E/AndroidRuntime(13274): ... 10 more
正如日志中所说:
02-27 19:13:04.098: E/AndroidRuntime(13274): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.my.app.name/android.app.DownloadManager}; have you declared this activity in your AndroidManifest.xml?
为了启动活动,您必须声明它。打开文件AndroidManifest.xml,并确保在应用程序标记内声明了活动:
<activity
android:name=".DownloadManager"
android:label="@string/app_name"
>
</activity>
“.DownloadManager”应与应用程序具有相同的包名。如果您想使用与应用程序不同的包,请完全指定它,例如。
android:name=“com.my.app.name.DownloadManager”
在我看来,包名似乎有些混乱。在日志中列出活动的com.my.app.name。接收者是com.my.app.name.services.BroadcastReceiverDownloadManager,但清单中有com.test.BroadcastReceiverDownloadManager
实际Java文件中的包名是什么?它们需要与清单一致。当你说“崩溃”时,堆栈跟踪是什么?我在帖子中添加了日志。
<activity
android:name=".DownloadManager"
android:label="@string/app_name"
>
</activity>