2017-07-19 19 views
-1

私は次の問題があります。WebViewのダウンロード先をファイルの名前を知らずにダウンロードフォルダに設定するにはどうすればよいですか?

私はWebViewです。このWebViewには、ユーザーがファイルをダウンロードしようとしているときに動作するダウンロードリスナーがあります。

通常の「ダウンロード」フォルダにファイルをダウンロードします。私は

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, title);

しかし、どのように、私は元の名前でファイルを保存しないを使用してこれを行うことができますか?

と呼ばれているURLは、ファイル名が含まれていないので、私は

String name = URLUtil.guessFileName(url, null, mimetype); 

を使用することはできません。

マイダウンロードマネージャは、現在、次のようになります。

mainWebView.setDownloadListener(new DownloadListener() { 
     public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { 
      DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 
      // Show a download notification 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
      String title = URLUtil.guessFileName(url, null, mimetype); 

      // Set directory of where the file should be saved to 
      request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, title); 
      // Start the download 
      dm.enqueue(request); 
     } 
} 

注:それは間違った名前の下だ場合には、私のファイルを保存するために、イベントをできるようになりますので、私は現在、URLUtil.guessFilename()メソッドを使用しています。

答えて

0

SOLUTION

ソリューションはURLUtil.guessFileName()機能に適切なcontentDispositionを渡しました。

はタイトルを取得すると、次のように動作します。

String title = URLUtil.guessFileName(url, contentDisposition, mimetype); 

(すべてのパラメータが public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength)に渡されます)