2011-07-28 2 views
2

J'ai actuellement un webview avec divers liens mp3. Si l'utilisateur appuie sur l'un de ces liens, un alertDialog apparaîtra et il pourra choisir d'écouter ou de télécharger le fichier. Pendant que ma partie de téléchargement fonctionne (via un asynctask), je l'ai actuellement configuré où je spécifie le nom que le fichier mp3 sur le SDCARD sera appelé. Je voudrais l'avoir pour que le nom de la piste soit le nom du fichier mp3. Des idées sur comment je pourrais faire ça? Merci.Android- Télécharger mp3 à SDCARD via l'URL de nommage numéro

est ici partie de mon code:

//so you can click on links in app and not open the actual browser. will stay in app 
    private class HelloWebViewClient extends WebViewClient{  
     @Override 
     public boolean shouldOverrideUrlLoading(final WebView view, final String url){ 
      view.loadUrl(url); 
      view.getSettings().getAllowFileAccess(); 
      view.getSettings().setJavaScriptEnabled(true); 
      //load the dropbox files so people can listen to the track 
      if(url.endsWith(".mp3")){ 
       progressWebView.dismiss(); 
       progressWebView.cancel(); 
       blogDialog.setButton("Listen", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Intent intent = new Intent(Intent.ACTION_VIEW); 
         intent.setDataAndType(Uri.parse(url), "audio/*"); 
         view.getContext().startActivity(intent); 

        } 
       }); 
       blogDialog.setButton2("Download", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         sdrUrl = url.toString(); 
         new DownloadFile().execute(); 


        } 

       }); 
       blogDialog.show(); 

      }else{ 
       return super.shouldOverrideUrlLoading(view, url); 
      } 
      return true; 
     } 
    } 

    //to handle the back button 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event){ 
     if((keyCode == KeyEvent.KEYCODE_BACK) && sdrWebView.canGoBack()){ 
      sdrWebView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    public void onPause(){ 
     super.onPause(); 
    } 

    /*create the pop up menu so you can reload*/ 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item){ 
     switch (item.getItemId()){ 
     case R.id.refreshsetting: sdrWebView.loadUrl("http://www.stopdroprave.com"); 
     break; 
     } 
     return true; 
    } 

    private class DownloadFile extends AsyncTask<String, Integer, String>{ 
     @Override 
     protected String doInBackground(String... url) { 
      try { 
       URL url2 = new URL(sdrUrl); 
       HttpURLConnection c = (HttpURLConnection) url2.openConnection(); 
       c.setRequestMethod("GET"); 
       c.setDoOutput(true); 
       c.connect(); 

       int lengthOfFile = c.getContentLength(); 

       String PATH = Environment.getExternalStorageDirectory() 
         + "/download/"; 
       Log.v("", "PATH: " + PATH); 
       File file = new File(PATH); 
       file.mkdirs(); 

       String fileName = "testSDRtrack.mp3"; 

       File outputFile = new File(file, fileName); 
       FileOutputStream fos = new FileOutputStream(outputFile); 

       InputStream is = c.getInputStream(); 

       byte[] buffer = new byte[1024]; 
       int len1 = 0; 
       while ((len1 = is.read(buffer)) != -1) { 
        publishProgress((int)(len1*100/lengthOfFile)); 
        fos.write(buffer, 0, len1); 
       } 
       fos.close(); 
       is.close(); 

       }catch (IOException e) { 
         e.printStackTrace(); 
       } 


      return null; 
     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 

      super.onProgressUpdate(values); 
     } 



} 
} 

Répondre