4

私はたくさん検索しましたが、満足のいく答えが見つかりません。ここでは、呼び出されたときに利用可能なすべてのダウンロード ステータスを Log.i() に出力するメソッドを作成しました。メソッドは次のとおりです。

DownloadManager downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Query query = new DownloadManager.Query();              
Cursor c = downloadManager.query(query);

while (c.moveToNext()) {
            switch(c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
                  case DownloadManager.STATUS_FAILED:
                      Log.i("46dl","Download failed!");
                    break;

                  case DownloadManager.STATUS_PAUSED:
                      Log.i("46dl","Download paused!");
                    break;

                  case DownloadManager.STATUS_PENDING:
                      Log.i("46dl","Download pending!");
                    break;

                  case DownloadManager.STATUS_RUNNING:
                      Log.i("46dl","Download in progress!");
                    break;

                  case DownloadManager.STATUS_SUCCESSFUL:
                      Log.i("46dl","Download complete!");
                    break;

                  default:
                      Log.i("46dl","Download is nowhere in sight");
                    break;
                }
            }

しかし、これはアプリからダウンロードを開始した場合にのみ機能します。例えば

Request request = new Request(Uri.parse("http://www.something.com/img/img4.jpg"));
downloadManager.enqueue(request);

他のアプリ(ブラウザなど)でダウンロードする他のファイルの場合、ログに行が書き込まれませんでした。何か不足していますか?助けてくれてありがとう!

4

1 に答える 1

3

他のアプリによって行われたダウンロードのダウンロード ステータスを取得することはできません。これは保護されています。

于 2013-07-10T15:39:35.413 に答える