屠龙

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

首先,个人觉得phonegap这样的设计是合理的,当你使用基于phonegap的应用程序,虽然用的是html+js,但是开发的却是本地应用了,所以在本地应用中遇到http协议的链接调用浏览器打开是合理的。

只是这种合理带来了不方便,尤其当你只用phonegap做一个壳,去浏览移动设备的网站时。使用jquerymobile可以解决这个问题,jqm会将本域内的http请求使用ajax传输,得到的结果再放入DOM中,个人推荐使用jqm的这种方式,处理灵活。

下面给一个一劳永逸的方式,网上目前我还没有搜到这种方式。

 下面是类似官方的示例,其中phonegap我用的是apache的cordova


import android.os.Bundle;
import org.apache.cordova.*;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewer extends DroidGap{
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        super.loadUrl("http://demo.wanban.cc/w3g");
    }
}  

在上面的基础上进行修改,将phonegap的webViewClient对象重新赋值一个新对象,并在新对象中重写shouldOverrideUrlLoading方法。


import android.os.Bundle;
import org.apache.cordova.*;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewer extends DroidGap{
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        super.loadUrl("http://demo.wanban.cc/w3g");

        super.webViewClient=new WebViewClient(){
            public boolean shouldOverrideUrlLoading(WebView view, String url){
                view.loadUrl(url);
                return true;
            }
        };
    }
}
posted on 2012-04-02 10:00  屠龙  阅读(2166)  评论(0编辑  收藏  举报