我在 Android Studio 从零开始使用 WebView 开发过程中遇到的几个坑

我所谓的从零开始,是指完全没有Android开发经验,甚至连Java都不会的从零开始,完全通过从网上查找资料,一步一摸索,下面是我在开发过程中遇到的几个问题,整理了一下。

Android Studio 编辑器

Android Studio是由Google推出的一个工具包一样的玩意,全英文界面,粗略扫了一眼settings没发现改language的地方,反正我看着也能用,也就没有去找什么汉化包。

下面进入正题:

Cannot resolve symbol ‘XX’

这个问题真是一个很沙雕的问题了,因为没有Java的知识(有一点其他语言的知识),我一度以为是什么包啊库啊之类的引用问题,查资料说:

“File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”

那我自然就去试试了,结果屁用没有,仍旧标红,然后,很神奇地,发现把光标点到那个标红的代码上面然后alt + enter,他就好了。

如何插入一个与res同级的资源文件夹

将界面左上角的Android更改为Project后在app->src->main上右键New->Folder->Assets Folder即可添加

Webview 相关

WebView是一个基于webkit引擎、展现web页面的控件,AndroidWebView在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome

下面再次进入正题

代码写完打不开页面

AndroidManifest.xml里与<application>同级处添加

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

页面打开无法调用JS

.java文件中添加

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

页面内报err_cleartext_not_permitted错误

AndroidManifest.xml<application>属性上添加

android:usesCleartextTraffic="true"

页面打开时自动唤起自带浏览器

创建一个WebView Client,在.java文件中添加

myWebView.setWebViewClient(new WebViewClient(){
	view.loadUrl(url);
		return true;
    }
});

页面打开后报err_unknow_url_scheme错误

WebView只能识别http以及https请求,对其他平台的唤起链接如weixin://alipays://等无法响应
可通过重写shouldOverrideUrlLoading()方法解决

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
	if(url == null) return false;
	try {
		if(url.startsWith("weixin://") //微信
			|| url.startsWith("alipays://") //支付宝
			|| url.startsWith("mailto://") //邮件
			|| url.startsWith("tel://")//电话
			|| url.startsWith("dianping://")//大众点评
			//其他自定义的scheme
		) {
			Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
			startActivity(intent);
			return true;
		}
	} catch (Exception e) { //防止crash
		return true;//返回true,表示拦截自定义链接,但不跳转,避免弹出错误页面
	}
		view.loadUrl(url);
		return true;
}

猜你喜欢

转载自blog.csdn.net/WindyLinx/article/details/88075248