Question

i have created a webview app i added downloader inside which download the file end with m4a..the app downloads the file but file name changes...how can get title from the file...

 public boolean shouldOverrideUrlLoading(WebView view, String url) {
       // handle different requests for different type of files
       // this example handles downloads requests for .m4a and .mp3 files
       // everything else the webview can handle normally
       if (url.endsWith(".m4a")) {
           Uri source = Uri.parse(url);
           // Make a new request pointing to the .apk url
           DownloadManager.Request request = new DownloadManager.Request(source);
           // appears the same in Notification bar while downloading
           request.setDescription("Description for the DownloadManager Bar");
           request.setTitle(getTitle());
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
               request.allowScanningByMediaScanner();
               request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
           }
           // save the file in the "Downloads" folder of SDCARD
           request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "filename");
           // get download service and enqueue file
           DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
           manager.enqueue(request);
       }
       else if(url.endsWith(".mp3")) {
           // if the link points to an .mp3 resource do something else
       }
       // if there is a link to anything else than .m4a or .mp3 load the URL in the webview
       else view.loadUrl(url);
       return true;                
     }
      });
Was it helpful?

Solution

This will give you your file name

final String[] separated = url.split("/");
final String myFile = separated[separated.length - 1];

It will split the url using the / character and you take the last element in the returned array.

Arrays are 0 based, so the last element is the one located at the vector's length - 1.

Put the above code just before this line: if (url.endsWith(".m4a")) {, where you want to get your file name.

Then, use it so:

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, myFile);

OTHER TIPS

Full code for downloading file inside webview without calling web-browser

  @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
       // handle different requests for different type of files
       // this example handles downloads requests for .m4a and .mp3 files
       // everything else the webview can handle normally

       if (url.endsWith(".m4a")) 
       {
           Uri source = Uri.parse(url);
           final String[] separated = url.split("/");
           final String myFile = separated[separated.length - 1];
           // Make a new request pointing to the .apk url
           DownloadManager.Request request = new DownloadManager.Request(source);
           // appears the same in Notification bar while downloading
           request.setDescription("Description for the DownloadManager Bar");
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
               request.allowScanningByMediaScanner();
               request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
           }
           // save the file in the "Downloads" folder of SDCARD
           request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, myFile);
           // get download service and enqueue file
           DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

           manager.enqueue(request);
 }

   else if (url.endsWith(".pdf")) 
   {
   Uri source = Uri.parse(url);
   final String[] separated = url.split("/");
   final String myFile = separated[separated.length - 1];
   // Make a new request pointing to the .apk url
   DownloadManager.Request request = new DownloadManager.Request(source);
   // appears the same in Notification bar while downloading
   request.setDescription("Description for the DownloadManager Bar");
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
       request.allowScanningByMediaScanner();
       request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
   }
   // save the file in the "Downloads" folder of SDCARD
   request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, myFile);
   // get download service and enqueue file
   DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

   manager.enqueue(request);


  }
 // if there is a link to anything else than .m4a or .mp3 load the URL in the webview
else view.loadUrl(url);
       return true;                
  }
     });
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top