2016-07-26 16 views
0

からファイルをロードしません。ファイルはダウンロードされていますが、Webviewに読み込まれていません。 WebViewがさえ、ダウンロードが完了すると、アプリを再起動した後net::ERR_FILE_NOT_FOUNDを言います。WebViewの私は、サーバーからHTMLファイルをダウンロードWebViewの中でそれをロードしようとしています内部ストレージ

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    webView = (WebView) findViewById(R.id.webView); 
    button = (Button) findViewById(R.id.button); 
    webView.loadUrl("file://"+Environment.DIRECTORY_DOWNLOADS+File.separator+"test.html"); 
    Log.e("CHECKKK", String.valueOf(Environment.DIRECTORY_DOWNLOADS+File.separator+"test.html")); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       myDownload("http://xxxxxx.com/xxxx/test.html"); 
       myDownload("http://xxxxxx.com/xxxx/mypic1.jpg"); 
      } catch (Exception e) { 
       Toast.makeText(MainActivity.this, e.getMessage() + "\n" + e.getCause(), Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
} 

public void myDownload(String myURL) { 

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myURL)); 
    request.setTitle("File Download"); 
    request.setDescription("Downloading...."); 
    request.allowScanningByMediaScanner(); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    String nameOfFile = URLUtil.guessFileName(myURL, null, MimeTypeMap.getFileExtensionFromUrl(myURL)); 
    request.setDestinationInExternalFilesDir(this,Environment.DIRECTORY_DOWNLOADS, nameOfFile); 

    DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
    manager.enqueue(request); 
} 
+0

あなたはマニフェストファイルを読み込む外部記憶許可を要求しましたか? – greenapps

+0

'WebViewは内部ストレージからファイルをロードしていません'。 'WebViewで外部ストレージからファイルを読み込まない'で変更してください。 – greenapps

+0

'Environment.DIRECTORY_DOWNLOADS + File.separator +" test.htm' – greenapps

答えて

1

を使用しています。あなたはfile:///

内の余分なスラッシュあなたはまた、正しくダウンロードフォルダにアクセスすることはできません"file:///"+Environment.DIRECTORY_DOWNLOADS+File.separator+"test.html"

お知らせを試みることができます。代わりに、このようにそれをやってみてください。

File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
File htmlFile = new File(file.getAbsolutePath()+"/test.html"); 
webView.loadUrl(htmlFile.getAbsolutePath()); 

UPDATE

これらの方法のいくつかの組み合わせが必要とされたようです。正しい形式は: webView.loadUrl("file://"+htmlFile.getAbsolutePath());

+0

そうは思わないでください。 – greenapps

+0

私が見た他のほとんどの例がそういったことをしていると思うので、ちょっと推測してみてください。もう一つの問題は、ダウンロードフォルダへのアクセス方法です。 – NoChinDeluxe

+0

はい、これは良く見えますが、これはダウンロードディレクトリを特定する通常の方法ですが、今度はfile://を省略しました。webView.loadUrl( "file://" + htmlFile.getAbsolutePath()); '。 – greenapps

0

Stringにファイルを読み、[動作するはずwebView.loadUrl()を呼び出すが、私はあなたがあなたのファイルパス文字列にスラッシュが欠落していると思う

// read from file 
String summary = "<html><body>You scored <b>192</b> points.</body></html>"; 
webview.loadData(summary, "text/html", null); 
+0

私の場合は、htmlファイルがサーバからダウンロードされています。文字列の形式にファイル? – akkk

+0

http://stackoverflow.com/questions/326390/how-do-i-create-a-java-string-from-the-contents-of-a-file –

関連する問題