2016-07-26 4 views
0

Я пытаюсь загрузить файлы HTML с сервера, а затем загрузить его в webview. Файлы загружаются, но они не загружаются в webview. Webview говорит net::ERR_FILE_NOT_FOUND даже после перезапуска приложения после завершения загрузки.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

Вызов webView.loadUrl() должен работать, но я думаю, что вам не хватает косую черту в вашей Filepath строке. Вы можете попробовать "file:///"+Environment.DIRECTORY_DOWNLOADS+File.separator+"test.html"

Обратите внимание на дополнительную косую черту в file:///

Вы можете также не доступа загружает папку правильно. Попробуйте делать это таким образом, вместо этого:

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

Да, это выглядит лучше. Это нормальный способ определить каталог загрузки. Но теперь вы опустили файл: //. 'WebView.loadUrl (" file: // "+ htmlFile.getAbsolutePath());'. – greenapps

0

Прочитайте файл в String, а затем использовать

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

в моем случае html-файл загружается с сервера. Так как я могу преобразовать этот html file to String form? – akkk

+0

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

Смежные вопросы