Android控件使用:WebView(一)

#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" />


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值