Java Webview链接不能使用本地存储的html文件
我目前有一个html文件存储在本地,这只是目前谷歌主页的html。当我将html加载到webview中时,它可以正常工作,但所有链接似乎都不起作用。例如,当我点击链接导航到谷歌图片时,它试图导航到该页面,但表示该页面不可用。我使用toast来显示正在打开的url,toast会显示一个url(在google images示例中),当我在电脑的浏览器中键入url时,它可以工作,但当试图通过手机上的webview导航到它时,它不工作。有什么想法吗?下面是我的代码Java Webview链接不能使用本地存储的html文件,java,android,Java,Android,我目前有一个html文件存储在本地,这只是目前谷歌主页的html。当我将html加载到webview中时,它可以正常工作,但所有链接似乎都不起作用。例如,当我点击链接导航到谷歌图片时,它试图导航到该页面,但表示该页面不可用。我使用toast来显示正在打开的url,toast会显示一个url(在google images示例中),当我在电脑的浏览器中键入url时,它可以工作,但当试图通过手机上的webview导航到它时,它不工作。有什么想法吗?下面是我的代码 public class MainAc
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");
谢谢 请尝试以下代码:-
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(TAG, "No SDCARD");
} else {
web_view.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/Android/data/output.html");
}
或
你必须在你的android清单上检查以下条目
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
确实是权限问题,我完全忘记了,因为我刚刚回到安卓系统。非常感谢!我会接受答案,当它允许我。欢迎一些时间,我也在做这种错误,它发生了,所以不要担心现在你的问题是解决!!!
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>