您的位置:首页 > 移动开发

Android控件使用:WebView(一)

2015-10-17 17:26 453 查看
#1 webview = new WebView(this);

//实例化WebView对象,this为Context

#2 webview.loadUrl("http://www.51cto.com/");

//加载需要显示的网页

#3 webview.getSettings().setJavaScriptEnabled(true);

//设置WebView属性,能够执行Javascript脚本

会出现警告:Using setJavaScriptEnabled
can introduce XSS vulnerabilities into you application, review carefully.

原因:如果你的应用没有在WebView内直接使用JavaScript,不要调用setJavaScriptEnabled()我们见过这个方法在简单的代码中执行,也许会导致在产品应用中改变用途
-- 所以如果必要的化移除它默认
的,WebView不执行JavaScript,所以跨站脚本攻击不可能产生。使用addJavaScriptInterface()要特别的小心,因为它允许JavaScript执行通常保留给Android应用的操作只把addJavaScriptInterface()暴露给可靠的输入源,如果不受信任的输入是被允许的,不受信任的JavaScript也许会执行Android方法。

解决方法:
1、开发文档中WebView有所提及
2、最简单的方法:加入:@SuppressLint("SetJavaScriptEnabled") 忽略这个警告

#4 webView.setWebViewClient(new MyWebViewClient()); //防止跳转浏览器

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

#5 webView 监听back键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
webView.goBack();
return true;
}
return false;
}

Demo:

public class MainActivity extends Activity {

private WebView webView;

@SuppressLint("SetJavaScriptEnabled")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

webView = new WebView(this);

webView.getSettings().setJavaScriptEnabled(true);

webView.loadUrl("http://www.51cto.com/");

webView.setWebViewClient(new MyWebViewClient());

setContentView(webView);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){

webView.goBack();

return true;

}

return false;

}

class MyWebViewClient extends WebViewClient {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

}

}
注意添加权限:<uses-permission android:name="android.permission.INTERNET" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: