0

SDカードからhtmlファイルを読み込んでwebviewに表示するアプリを作りました。それは Android 3.2 で正常に実行されていましたが、4.0 に変更して、テストのために Micromax タブレットで実行したときです。「リンクが一時的にダウンしているか、新しいアドレスに移動した可能性があります」というエラーが表示されますが、エミュレータでも実行されていません。SDカードからのファイルへのアクセスをサポートしていない4.0を教えてください。または、提案してください。

コード スニペットは次のとおりです。

WebView webComp = (WebView) findViewById(R.id.webView);
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("file://sdcard/Tab-Demo/index10.html");            
    } 
}

class HelloWebViewClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl (url); 
        return true;
    }
}  
4

2 に答える 2

1

http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.htmlに示すように、ContentProviderを使用してローカルファイルをWebViewに提供できます。

ルートがSDカードに設定されたファイルを提供するようにオーバーライドされたopenFileを変更します

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    File file = new File(Environment.getExternalStorageDirectory(), uri.getPath());
    ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
    return parcel;
}

この方法では、次のファイルにアクセスできます。

webComp.loadUrl("content://Tab-Demo/index10.html");

マニフェストにContentProviderを追加することを忘れないでください。

于 2012-05-23T10:08:19.493 に答える
-1

ファイルパスがタブレットで同じかどうかを確認します

于 2012-05-23T09:56:15.900 に答える