http から大きなファイルをダウンロードするアプリケーションがあります。これを処理するために、 を使用しDownloadManager
ました。
ダウンロードするファイルが大きすぎるため、ユーザーがアプリケーションをバックグラウンドに置いて、ダウンロードの実行中に自分の電話を自由に使用できるようにしたいと考えています。
私が書いたコードでは、ダウンロードが開始され、正しく動作しますが、ユーザーが通知バーでダウンロード ファイルの名前をクリックするたびに、ダウンロード リスト (システム アプリケーションのダウンロード - DownloadManager.ACTION_VIEW_DOWNLOADS
) を表示する必要があります。
私が望むのは、ブラウザーが Web からファイルをダウンロードするときに、アプリケーションがデフォルトのブラウザーのダウンロード マネージャーとまったく同じように動作することです。
の宣言とコーディングを手伝ってもらえますBroadcastReceiver
か? 私が言ったように、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>
そして、私の BroadcastReceiverDownloadManager.java は次のとおりです。
public class BroadcastReceiverDownloadManager extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
Log.v("MY_APP","!!! onReceive !!!");
if (DownloadManager.ACTION_NOTIFICATION_CLICKED.equals(action))
{
Intent i = new Intent(context,DownloadManager.class);
i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
context.startActivity(i);
}
}
}
クリックイベントを処理しない場合があり、クリックを正しく処理するたびに、アプリケーションは次のようにクラッシュします。
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