仔仔安全卫士demo(二)

第一步:启动tomcat,在tomcat中加入如下json文件

{"version":"2.0","description":"我是最新的,来下载我把","apkurl":"http://192.168.1.103:8080/zaizaimobilesafe-2.0.apk"}

第二步:实现一个函数显示网络访问服务器获取服务器数据的功能函数

private void chackUpdate() {
    /*定义一个消息对象,作为handler的形参进行数据的传递*/
    final Message message = Message.obtain();
    final long startTime = System.currentTimeMillis();
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                /*在value文件夹中配置一个config.xml文件,存储服务器的url,便于维护,getString获得,因为R.string.serviceurl代表的是一个整数是数据的一个标识,而不是数据本身*/
                URL url = new URL(getString(R.string.serviceurl));

                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(4000);
                int code = connection.getResponseCode();
                if (code == 200) {
                    /*访问成功*/
                    InputStream is = connection.getInputStream();
                    /*把流转换成string*/
                    String result = StreamTools.readFromStream(is);
                    Log.i(TAG, "联网成功" + result);
                    /*json解析*/
                    JSONObject object = new JSONObject(result);
                    verison = (String) object.get("vsersion");
                    description = (String) object.get("description");
                    apkurl = (String) object.get("apkurl");
                    /*检查是否是新版本*/
                    if (getVersionName().equals(verison)) {
                        message.what = ENTER_HOME;
                        /*版本一致,进入主页面*/
                    } else {
                        message.what = SHOW_UPDATE_DIALOG;
                        /*更新新版本*/
                    }
                }
            } catch (MalformedURLException e) {
                message.what = URL_ERROR;
                e.printStackTrace();
            } catch (IOException e) {
                message.what = NETWORK_ERROR;
                e.printStackTrace();
            } catch (JSONException e) {
                message.what = JSON_ERROR;
                e.printStackTrace();
            } finally {
                long endTime = System.currentTimeMillis();
                /*运行了多少时间*/
                long dTime = endTime - startTime;
                /*让程序停留2秒*/
                if (dTime < 4000) {
                    try {
                        Thread.sleep(4000 - dTime);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                handler.sendMessage(message);
            }
        }
    }).start();
}

定义一个handler用于接收数据

private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SHOW_UPDATE_DIALOG:/*显示升级的对话框*/
                    Log.i(TAG, "显示升级对话框");

                    showUpdateDialog();
                    break;
                case ENTER_HOME:/*进入主页面*/
                    enterHome();
                    break;
                case URL_ERROR:/*URL错误*/
                    enterHome();
                    Toast.makeText(getApplicationContext(), "URL错误", Toast.LENGTH_LONG).show();
                    break;
                case NETWORK_ERROR:/*网络错误*/
                    enterHome();
                    Toast.makeText(getApplicationContext(), "网络异常", Toast.LENGTH_LONG).show();
                    break;
                case JSON_ERROR:/*JSON解析错误*/
                    enterHome();
                    Toast.makeText(getApplicationContext(), "JSON解析错误", Toast.LENGTH_LONG).show();
                    break;
                default:
                    break;
            }

            super.handleMessage(msg);
        }
    };

下一遍将给出entryHome函数以及主页面的代码

时间: 2024-11-02 09:06:30

仔仔安全卫士demo(二)的相关文章

Android实例-手机安全卫士(二十一)-自定义Activity界面切换动画

一.目标. 实现两个Activity界面的动画切换效果. 二.代码实现. 1.在res文件夹下新建一个名为anim的文件夹. 2.在新建的anim文件夹中新建一个Android xml file文件(取名tran_out),根据动画要求选择根元素(本例为translate),用于实现Activity界面移出屏幕的动画效果. 3.在新建的xml文件中,根标签<translate>的属性中,当输入一个属性时会自动增加命名空间.属性android:fromXDelta表示从哪个X轴来,原点为屏幕左上

swift:UIKit中Demo(二)

这一节,继续为大家提供一个Demo,用来说明Swift中的各种语法及在UIView中的基本使用.效果图如下: 看起来,这个Demo非常的简单.但是为了进行详细的语法说明,它的实现,均是用代码实现的,并且下方的进度条都是"组装"起来的. 结构分析: 1. 有一个根控制器ViewController.swift, 它只是用来展示上面显示的文字(秋恨雪). 2. 然后下面的文字大小切换及进度条这个整体是一个自定义的View(LFFontView.swift) 3. 进度条部分又有三部分内容组

Android实例-手机安全卫士(二十)-使用shape形状,自定义组件边框、形状等

一.目标. 1.实现文本组件的点击事件. 2.实现组件(TextView等)以形状(圆角矩形.椭圆.圆环等)显示,也可为其增加自定义边框.渐变等属性.并可以与样式组合,可实现默认.按下等过程显示不同的形状. 默认:  按下: 二.代码实现. 1.TextView对象带有点击事件,需对clickable属性设为true,并取名点击事件名称,即onclick属性值为resetWizard. 2.在手机防盗界面实现点击事件处理,(即重新进入”设置向导“界面) 点击事件处理代码; //重新进入防盗设置向

selenium demo(二)

(二)查询 1 package test; 2 3 4 import org.openqa.selenium.*; 5 import org.openqa.selenium.chrome.ChromeDriver; 6 import org.openqa.selenium.interactions.Actions; 7 import org.openqa.selenium.support.ui.ExpectedCondition; 8 import org.openqa.selenium.sup

Android实例-手机安全卫士(二十六)—获取手机内联系人信息

一.目标. 通过内容解析器获取手机联系人信息,并采用自定义的样式显示. 为了便于介绍和重复使用,重新建立一个”读取联系人“工程. 二.代码实现. 1.新建工程,取名为”读取联系人“.在布局文件(activity_main.xml)中,采用ListView组件(其ID为select_contact). 布局文件代码: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmln

Android实例-手机安全卫士(二十九)-接受安全号码发送的指令

一.目标 1.利用广播接收者接受安全号码发送的短信: 2.根据短信内容完成相应指令操作(此处暂以Toast形式代替).        二.代码实现 1.在receiver包下新建一个SMSReceiver类继承BroadcastReceiver,并在功能清单文件(AndroidManifest.xml)中的<application>内注册该receiver,名称为其全路径名称,意图过滤器(<intent-filter>)中设置优先级(android:priority)高一些(如10

Android实例-手机安全卫士(二十三)-自定义抽象类及使用

一.目标. 将二十二节中通过滑动切换Activity界面效果的代码提取出来做成一个自定义抽象类,并定义抽象方法,便于其他类的调用.也就是其他Activity(如设置向导2.3.4)通过继承自定义的类,再通过实现其未实现的方法来快速实现滑动切换. 二.代码实现. 1.在程序包下新建一个类(取名SlideActivity),继承Activity,指定其类型为抽象类(public abstract class SlideActivity extends Activity).在自定义的抽象类代码中,定义

Android实例-手机安全卫士(二十五)-检查手机SIM卡是否变更

一.目标 1.利用广播接收者(手机重启时会发出相应广播)获取开机时的SIM序列号,与已经保存着的比较.根据比较结果完成相应操作. 2.(可选)强制在防盗设置向导第二步中要求绑定SIM卡后才可进行下一步设置. 3.实现从另一个Activity中获取数据,即点击”选择联系人“人后跳至新建的类(选择联系人)中,并从中获取联系人数据. 二.代码实现. 1.在程序包下新建包(取名com.example.mobilesafe.receiver),用于接收广播.在新建包下新建类(取名BootCompleteR

Android实例-手机安全卫士(二十七)—读取联系人号码

一.目标 1.将“二十六”介绍的读取联系人的方法移植到项目中: 2.选取读取到的联系人条目,将其号码自动填入文本框中(通过Intent方式在Activity之间传递数据). 二.代码实现. 1.将读取联系人方法移植到项目中. ①.在主程序包(mobilesafe)下新建选择联系人类(SelectContactActivity),并在布局文件夹中(layout)新建”选择联系人“的布局文件(activity_select_contact.xml).布局文件各联系人信息采用ListView组件显示.