2016-03-23 7 views
2

WebViewでmp3をダウンロードできるウェブサイトを読み込んでいます。ただし、ダウンロードボタンを右クリック/ロングタップし、「保存リンクをとする」をクリックしてmp3をダウンロードする必要があります。ダウンロードボタンをタップするだけで、ダウンロードする代わりにストリーミングが開始されます。webviewでファイルをダウンロードしますか?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_download); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new MyWebViewClient()); 

    webView.getSettings().setLoadsImagesAutomatically(false); 
    // download manager 
      webView.setDownloadListener(new DownloadListener() { 
       @Override 
       public void onDownloadStart(String url, String userAgent, 
         String contentDisposition, String mimeType, 
         long contentLength) { 
        DownloadManager.Request request = new DownloadManager.Request(
          Uri.parse(url)); 
        request.setMimeType(mimeType); 
        String cookies = CookieManager.getInstance().getCookie(url); 
        request.addRequestHeader("cookie", cookies); 
        request.addRequestHeader("User-Agent", userAgent); 
        request.setDescription("Downloading file..."); 
        request.setTitle(URLUtil.guessFileName(url, contentDisposition, 
          mimeType)); 
        request.allowScanningByMediaScanner(); 
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
        request.setDestinationInExternalPublicDir(
          Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(
            url, contentDisposition, mimeType)); 
        DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
        dm.enqueue(request); 
        Toast.makeText(getApplicationContext(), "Downloading File", 
          Toast.LENGTH_LONG).show(); 
       } 
      }); 
      //download manager 
    webView.loadUrl("http://www.beemp3s.org/"); 
} 

private class MyWebViewClient extends WebViewClient { // handle URLs in 
                 // webview only 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

ストリーミングではなくファイルをダウンロードするにはどうすればよいですか? :)

+0

すべてのURLをWebビューで処理しないようにしてください。あなたはすでに 'shouldOverrideUrlLoading(...)'を拡張しています –

+0

私は自分のwebview内のみをダウンロードし、自分のダウンロードマネージャを使用したい – Emily

答えて

-1

私はそれが助けになるかどうかわかりませんが、これらの行を追加してみてください。

private class myWebViewClient extends WebViewClient { 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.contains("beemp3.org")) { 
     view.loadUrl(url); 
    } else { 
     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     startActivity(i); 

    } 


    return true; 

} 
関連する問題