android判断phonegap是否联网动态加载 super.loadUrl网址

本文详细解析了在Android应用中使用Java和JS分别判断网络状态的原理与应用场景,对比了两种方法的优缺点,并提供了具体实现代码。重点讨论了如何避免网址无法访问的情况,以及如何避免直接访问实际网址,同时介绍了Java代码处理网络状态,以及JS代码在应用中的应用,包括检查连接状态、处理返回键和菜单按钮事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



复制代码
 1 public void onCreate(Bundle savedInstanceState) {
 2 
 3  super.onCreate(savedInstanceState);
 4          super.setIntegerProperty("splashscreen", R.drawable.splash);
 5          ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
 6          NetworkInfo info = cwjManager.getActiveNetworkInfo();
 7          if (info != null && info.isAvailable()){
 8              super.loadUrl("http://www.xxx.com",4500);
 9          }
10          else
11          {
12              super.loadUrl("file:///android_asset/www/error.html", 4500);
13          }
14         }
复制代码

解释下  第四行 显示启动画面

第七行判断是否联网 如果联网加载远程地址 如果不联网加载本地地址

别忘网络权限

error.html错误界面代码

主要js代码

复制代码
document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() {
        checkConnection();
        document.addEventListener("backbutton", eventBackButton, false); //返回键
        //document.addEventListener("menubutton", eventMenuButton, false);  //menu
    }
    function checkConnection() {
      var networkState = navigator.network.connection.type;
        if( networkState == Connection.NONE ) {
            navigator.notification.confirm('请确认网络连接已经开启', showAlert , '提示', '确定');
            return false;
        } 
  }
  function showAlert(button) {
          if( button==1 ) {
              navigator.app.exitApp();
          }
          return false;
  }
    function eventBackButton(){
          
        navigator.notification.confirm('确认退出?', showConfirm, '退出软件', '确定,取消'); 
         
    }
    function showConfirm(button) {
        
        if( button==1 ) {
            document.removeEventListener("backbutton", eventBackButton, false); //注销返回键
            navigator.app.exitApp();
        }
    }
复制代码

曾经有人很奇怪为什么要用java判断是否联网而不直接在js里面判断主要原因:

1,不愿意让他显示www.xx.com网址不能访问情况

2,避免直接访问实际网址

3,而且免去本地判断跳转远程地址中间空白页面

复制代码
 1 public void onCreate(Bundle savedInstanceState) {
 2 
 3  super.onCreate(savedInstanceState);
 4          super.setIntegerProperty("splashscreen", R.drawable.splash);
 5          ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
 6          NetworkInfo info = cwjManager.getActiveNetworkInfo();
 7          if (info != null && info.isAvailable()){
 8              super.loadUrl("http://www.xxx.com",4500);
 9          }
10          else
11          {
12              super.loadUrl("file:///android_asset/www/error.html", 4500);
13          }
14         }
复制代码

解释下  第四行 显示启动画面

第七行判断是否联网 如果联网加载远程地址 如果不联网加载本地地址

别忘网络权限

error.html错误界面代码

主要js代码

复制代码
document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() {
        checkConnection();
        document.addEventListener("backbutton", eventBackButton, false); //返回键
        //document.addEventListener("menubutton", eventMenuButton, false);  //menu
    }
    function checkConnection() {
      var networkState = navigator.network.connection.type;
        if( networkState == Connection.NONE ) {
            navigator.notification.confirm('请确认网络连接已经开启', showAlert , '提示', '确定');
            return false;
        } 
  }
  function showAlert(button) {
          if( button==1 ) {
              navigator.app.exitApp();
          }
          return false;
  }
    function eventBackButton(){
          
        navigator.notification.confirm('确认退出?', showConfirm, '退出软件', '确定,取消'); 
         
    }
    function showConfirm(button) {
        
        if( button==1 ) {
            document.removeEventListener("backbutton", eventBackButton, false); //注销返回键
            navigator.app.exitApp();
        }
    }
复制代码

曾经有人很奇怪为什么要用java判断是否联网而不直接在js里面判断主要原因:

1,不愿意让他显示www.xx.com网址不能访问情况

2,避免直接访问实际网址

3,而且免去本地判断跳转远程地址中间空白页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值