webview не может загрузить html-файл с SD-карты

17

Я пытаюсь загрузить html-файл с SD-карты. Заметка:  - & GT; если я загружаю Ссылка , он работает.  - & GT; файл существует  - & GT; У меня есть разрешения для Интернета и WRITE_EXTERNAL_STORAGE

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    addB = (Button) findViewById(R.id.add);
    webComp = (WebView) findViewById(R.id.webC);

    WebSettings webSettings = webComp.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSupportZoom(false);
    webSettings.setAllowFileAccess(true);
    webSettings.setLoadsImagesAutomatically(true);
    webSettings.setSavePassword(false);
    webSettings.setSaveFormData(false);
    webSettings.setJavaScriptEnabled(true);        

    webComp.setWebViewClient(new HelloWebViewClient());                    



    webComp.loadUrl("/sdcard/FMS/1/message.html");            



}

Спасибо! :)     

задан Misca 29.03.2011 в 15:48
источник
  • Какую ошибку вы получаете, когда используете LogCat? Что относительно «READ_EXTERNAL_STORAGE»? Я всегда использовал sth. как Environment.getExternalStorageDirectory (). getAbsolutePath () + "/FMS/1/message.html". Мне интересно, можно ли загрузить файл HTML из хранилища с помощью метода loadUrl. Возможно, вы должны попробовать обходное решение с loadData (...) –  Rainer 29.03.2011 в 15:52

3 ответа

39

Misca,

Вы не должны жестко закодировать каталог такой SDK. Обычно он равен /mnt/sdcard/ , но этого никогда не бывает. Вы также должны всегда проверять, существует ли sdcard и монтируется первым!

Вы хотите использовать следующее:

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    Log.d(TAG, "No SDCARD");
} else {
    webComp.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/FMS/1/message.html");
}
    
ответ дан Will Tate 29.03.2011 в 15:53
  • Правильно и работает без каких-либо проблем .. –  Gnanam R 31.01.2013 в 05:57
  • загружает только html-файлы. что, если html-файл содержит относительные пути для загрузки изображений и скриптов. –  Chandra Kiran 06.03.2014 в 13:53
  • Вы должны заметить, что приложение должно иметь разрешение <uses-permission android: name="android.permission.READ_EXTERNAL_STORAGE" /> –  Phuong 03.06.2015 в 12:13
1

Я думаю, что url является файлом: ///sdcard/FMS/1/message.html

    
ответ дан Jett Hsieh 29.03.2011 в 15:52
0

Вы можете получить к нему доступ, так как любые файлы, локальные в .html-файле, будут загружены за исключением видео

webView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/myapprepository/index.html");
    
ответ дан JJ_Coder4Hire 22.03.2014 в 00:26