2013-05-03 2 views
0

В настоящее время у меня есть html-файл, который хранится локально, что является только html для главной страницы google в настоящее время. Когда я загружаю html в webview, он отлично работает, но ни одна из ссылок не работает. Например, когда я нажимаю ссылку для перехода к изображениям Google, она пытается перейти на страницу, но говорит, что веб-страница недоступна. Я использовал тост, чтобы отобразить, какой URL-адрес открывается, и тост показывает URL-адрес (http://www.google.com/imghp?hl=en&tab=wi в примере с изображениями Google), когда я набираю URL-адрес в браузере на своем компьютере, он работает, но он не работает при попытке навигации к нему через веб-просмотр на моем телефоне. Есть идеи? Ниже мой код.Ссылки Webview не работают с локально хранящимся html-файлом

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WebView wb = (WebView)findViewById(R.id.webView1); 

    wb.getSettings().setJavaScriptEnabled(true); 
    WebSettings settings = wb.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDomStorageEnabled(true); 

    //Listed as optimal settings for HTML5 (may need testing?). 
    //Ref. http://stackoverflow.com/questions/10097233/optimal-webview-settings-for- html5-support 
    wb.setFocusable(true); 
    wb.setFocusableInTouchMode(true); 
    wb.getSettings().setRenderPriority(RenderPriority.HIGH); 
    wb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    wb.getSettings().setDatabaseEnabled(true); 
    wb.getSettings().setAppCacheEnabled(true); 
    wb.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 


    WebViewClient client = new WebViewClient(){ 
     // you tell the webclient you want to catch when a url is about to load 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url){ 
      Toast.makeText(getApplicationContext(), url, Toast.LENGTH_SHORT).show(); 
      view.loadUrl(url); 
      return true; 
     } 
     // here you execute an action when the URL you want is about to load 
     @Override 
     public void onLoadResource(WebView view, String url){ 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
     } 
    }; 

    wb.setWebViewClient(client); 
    wb.loadUrl("file:///mnt/sdcard/Android/data/output.html"); 

Спасибо!

ответ

1

Try ниже код: -

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 
Log.d(TAG, "No SDCARD"); 
} else { 
web_view.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/Android/data/output.html"); 
} 

или

web_view.loadUrl("file://"+Environment.getExternalStorageDirectory()+"//Android/data/output.html"); 

и у должны проверить ниже входа на ур андроид манифеста

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+0

Это было на самом деле разрешения, я полностью забыл об этом, поскольку я просто возвращаюсь в Android. Спасибо! Я приму ответ, когда это позволит. – johns4ta

+0

приветствую какое-то время, и я делаю такую ​​ошибку, так что не волнуйся теперь проблема ур! – duggu