2017-04-18 6 views
0

私はアプリケーションを開発しており、Androidのダウンロードマネージャクラスを使用しています。私は "myApp"という名前のフォルダにファイルをダウンロードしたい(フォルダは既に存在する)。これが私が試みたものです。私はまた、ダウンロード場所を設定するさまざまな方法を試みた。しかし、彼らは動作していません。この問題を解決するのを手伝ってください。Androidダウンロードマネージャがファイルのダウンロード場所を設定できないため、実際のファイル名を取得できません

DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 

     boolean isDownloading = false; 
     DownloadManager.Query query = new DownloadManager.Query(); 
     query.setFilterByStatus(
       DownloadManager.STATUS_PAUSED| 
         DownloadManager.STATUS_PENDING| 
         DownloadManager.STATUS_RUNNING| 
         DownloadManager.STATUS_SUCCESSFUL 
     ); 
     Cursor cur = mgr.query(query); 
     int col = cur.getColumnIndex(
       DownloadManager.COLUMN_LOCAL_FILENAME); 
     for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) { 
      isDownloading = isDownloading || ("local file path" == cur.getString(col)); 
     } 
     cur.close(); 

     if (!isDownloading) { 
      Uri source = Uri.parse(myWebsites[j]); 

      Uri dst_uri = Uri.parse("file:///mnt/sdcard/Signagee"); 

      DownloadManager.Request request = new DownloadManager.Request(source); 

      request.setDestinationUri(dst_uri); 
      request.setNotificationVisibility(
        DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED 
      ); 
      request.allowScanningByMediaScanner(); 

      long id = mgr.enqueue(request); 
     } 
+0

は 'を/ mnt/SDカード/'のようなハードコーディングさパスを使用しないでください。 'Environment'クラスを使用してください –

+0

ファイル名を取得するのに役立ちますか? – venura

答えて

2

すべてのダウンロードは、ダウンロードフォルダにダウンロードされます。この

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); 

を使用してください。環境クラスから他の宛先を選択できます。

この

String filePath = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME)); 
     filename = filePath.substring(filePath.lastIndexOf('/')+1, filePath.length()); 

使用を確認し、ファイル名を取得するには上記の行では、このfilename

+0

ありがとうございました。できます。しかし、まだ私はダウンロードファイルの実際のファイル名を取得することはできません。 @サル。助けてください – venura

+0

@ Sallu-はい私もこの答えを見つけて、このようにしました (cur.moveToFirst();!cur.isAfterLast(); cur.moveToNext()){ isDownloading = isDownloading || ( "ローカルファイルパス" == cur.getString(col)); title = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_TITLE)); 文字列filePath = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME)); ファイル名= filePath.substring(filePath.lastIndexOf( '/')+ 1、filePath.length()); } しかし、私はループの外側で 'filename'を使用することはできません – venura

+0

done。しかし、あなたはタイトルで私を助けてくださいできますか?私は – venura

関連する問題