Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单击事件时处理DownloadManager,并从广播接收器启动系统下载应用程序_Java_Android_Broadcastreceiver_Android Download Manager - Fatal编程技术网

Java 在单击事件时处理DownloadManager,并从广播接收器启动系统下载应用程序

Java 在单击事件时处理DownloadManager,并从广播接收器启动系统下载应用程序,java,android,broadcastreceiver,android-download-manager,Java,Android,Broadcastreceiver,Android Download Manager,我有一个从http下载大文件的应用程序。 为了处理这个问题,我使用了DownloadManager 要下载的文件太大,我希望用户能够将应用程序放在后台,并在下载运行时自由使用手机 在我编写的代码中,下载启动并正常工作,但我需要用户在通知栏中单击下载文件的名称时,必须向其显示下载列表(系统应用程序下载-DownloadManager.ACTION\u VIEW\u Downloads) 我想要的是,当浏览器从web下载文件时,我的应用程序将完全像默认浏览器的下载管理器一样工作 您能帮我声明并为Br

我有一个从http下载大文件的应用程序。 为了处理这个问题,我使用了
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>