【发布时间】:2014-08-09 13:48:31
【问题描述】:
我想使用我自己的 webview 下载一些文件,但是当我使用下载管理器时,我无法在下载之前获取文件的默认名称。
我试过了,但它不起作用
String fileName = url.substring(url.lastIndexOf('/') + 1);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName );
有什么想法吗?
你需要什么:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url2) {
if(url2.startsWith("http://www.youtube-mp3.org/get?ab=")){
if(isDownloadManagerAvailable(MainActivity.this)){
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url2));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setMimeType("audio/MP3");
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
//Get file name as string
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, -----);//put it here
manager.enqueue(request);
}
}
else{
view.loadUrl(url2);
}
return false;
}
【问题讨论】:
-
我认为你也可以使用 Uri.getLastPathSegment() : developer.android.com/reference/android/net/… 。不过不确定。无论如何,变量“url”和“fileName”等于什么?
-
因为url不像www。 ........../audio.mp3 这就是为什么它找不到文件名
-
那么 URL 值是多少?当您尝试从那里下载文件时,网络浏览器(例如)能否知道文件名是什么?
-
可以,es文件下载器可以。
-
你试过“URLUtil.guessFileName()”吗?