版本更新

package com.example.activity;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.format.Time;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.example.adapter.MyElvAdapter;
import com.example.application.MyApplication;
import com.example.fragment.Add_Fragment;
import com.example.fragment.Kecheng_Fragment;
import com.example.fragment.Shop_Fragment;
import com.example.fragment.Shouye_Fragment;
import com.example.fragment.Zuopin_Fragment;
import com.example.lingliapp.R;
import com.example.utils.ToStringUtils;
import com.example.utils.UpdateTools;
import com.example.vo.GoodsAll;
import com.example.vo.UpdateEntity;
import com.example.window.MyWindowManager;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.umeng.message.PushAgent;
import com.umeng.message.UmengRegistrar;
import com.umeng.socialize.utils.Log;

import org.json.JSONObject;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

public class MainActivity extends FragmentActivity {

    private UpdateEntity updateEntity;
    private FrameLayout fl;
    private Button rb_shouye;
    private Button rb_add;
    private Button rb_kecheng;
    private Button rb_zuopin;
    private Button rb_shop;
    private FragmentManager manager;
    private Shouye_Fragment shouye_fragment;
    private Zuopin_Fragment zuopin_fragment;
    private Add_Fragment add_fragment;
    private Kecheng_Fragment kecheng_fragment;
    private Shop_Fragment shop_fragment;
    private List<String> list;
    private ImageView iv_menu;
    private ImageView iv_myself;
    private SlidingMenu menu_left;
    private SlidingMenu menu_right;
    private TextView tv_lingli;
    private Button close;
    private PopupWindow popupWindow;
    private View view;
    private Button pop_btn_zp, pop_btn_kc;
    private ImageView iv_right_login;
    private DisplayImageOptions options;
    private TextView tv_right_name;
    private MyApplication application;
    private TextView tv_right_study;
    //定义共享优先数据及基础字段
    private String MY_RMBCost = "MY_RMBCost";

    private String TodayTime = "TodayTime";
    private Button bt_qiandao;
    private TextView tv_time;
    private String str;
    private ExpandableListView elv_left_menu;
    public GoodsAll goods;
    private MyElvAdapter myElvAdapter;
    BDLocation location;
    public LocationClient mLocationClient = null;
    public BDLocationListener myListener = new MyLocationListener();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //版本更新
        updateVersion();
        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);    //注册监听函数
        initLocation();
        //开启定位
        mLocationClient.start();
        //开启推送服务
        PushAgent mPushAgent = PushAgent.getInstance(this);
        mPushAgent.enable();

        //统计应用启动数据
        PushAgent.getInstance(this).onAppStart();

        // 获取设备的device_token
        String device_token = UmengRegistrar.getRegistrationId(this);
        System.out.println(device_token);
        application = (MyApplication) getApplication();

        //找控件
        findView();
        //左侧滑
        leftMenu();

        //右侧滑
        rightMenu();

        //获取管理对象
        manager = getSupportFragmentManager();
        //获取事务
        FragmentTransaction beginTransaction2 = manager.beginTransaction();

        //创建fragment对象
        shouye_fragment = new Shouye_Fragment();
        zuopin_fragment = new Zuopin_Fragment();
        add_fragment = new Add_Fragment();
        kecheng_fragment = new Kecheng_Fragment();
        shop_fragment = new Shop_Fragment();

        //添加进activity中
        beginTransaction2.add(R.id.fl, shouye_fragment, "shouye");
        beginTransaction2.add(R.id.fl, zuopin_fragment, "zuopin");
        beginTransaction2.add(R.id.fl, add_fragment, "add");
        beginTransaction2.add(R.id.fl, kecheng_fragment, "kecheng");
        beginTransaction2.add(R.id.fl, shop_fragment, "shop");

        beginTransaction2.hide(zuopin_fragment);
        beginTransaction2.hide(add_fragment);
        beginTransaction2.hide(kecheng_fragment);
        beginTransaction2.hide(shop_fragment);


        beginTransaction2.commit();

        //按钮监听
        jianTing();


        view = View.inflate(MainActivity.this, R.layout.popwindow, null);

        popupWindow = new PopupWindow(view, 500, 200);
        popupWindow.setOutsideTouchable(true);
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
//        popupWindow.showAtLocation();


        //泡泡窗口的空间
        pop_btn_zp = (Button) view.findViewById(R.id.pop_btn_zp);
        pop_btn_kc = (Button) view.findViewById(R.id.pop_btn_kc);

        //泡泡窗口控件的监听
        pop_btn_zp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                }else{
                    Intent intent = new Intent(MainActivity.this, FaBu_Zp_Activity.class);
                    startActivity(intent);
                }
            }
        });

        pop_btn_kc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                }else{
                    Intent intent = new Intent(MainActivity.this, PublishCourseActivity.class);
                    startActivity(intent);
                }
            }
        });

        int conut = application.getConut();
        tv_right_study.setText("学习币:" + conut);

    }

    /**
     * 设置时间
     */
    private void SetTime() {
        //读取共享数据
        SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
        Time t = new Time();
//        Time t = new Time();
        t.setToNow();
        int lastmonth = t.month + 1;
        str = t.year + "年" + lastmonth + "月" + t.monthDay + "日";


        String nowtime = my_rmb_data.getString(TodayTime, "").toString();

        if (nowtime.equals(str) == true) {
//            tv_time.setText(nowtime +"已签到!");
            bt_qiandao.setText(nowtime + "已签到!");
//            bt_qiandao.setBackgroundResource(R.drawable.yqd);
        } else {
            bt_qiandao.setText("签到");
//            tv_time.setText(str);
//            bt_qiandao.setBackgroundResource(R.drawable.qd);
        }
    }

    private void findView() {
        fl = (FrameLayout) findViewById(R.id.fl);
        rb_shouye = (Button) findViewById(R.id.rb_shouye);
        rb_zuopin = (Button) findViewById(R.id.rb_zuopin);
        rb_add = (Button) findViewById(R.id.rb_add);
        rb_kecheng = (Button) findViewById(R.id.rb_kecheng);
        rb_shop = (Button) findViewById(R.id.rb_shop);
        iv_menu = (ImageView) findViewById(R.id.iv_menu);
        iv_myself = (ImageView) findViewById(R.id.iv_myself);
        tv_lingli = (TextView) findViewById(R.id.tv_lingli);
    }

    public void leftMenu() {

        // 初始化SlidingMenu对象
        menu_left = new SlidingMenu(this);

        // 设置侧滑方式为左侧侧滑
        menu_left.setMode(SlidingMenu.LEFT);
        iv_menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                menu_left.showMenu();
            }
        });
        /*
         * 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
         * SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
         * 不响应触摸事件
         */
        menu_left.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        // 设置阴影的宽度
        menu_left.setShadowWidthRes(R.dimen.shadow_width);
        // 设置阴影的图片
        // menu.setShadowDrawable(R.drawable.ic_launcher);
        // 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
        menu_left.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        // 设置滑动时的渐变程度
        menu_left.setFadeDegree(0.35f);
        // 使SlidingMenu附加在Activity右边
        // SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
        // SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
        menu_left.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        // 设置SlidingMenu关联的布局
        menu_left.setMenu(R.layout.left_menu);

        TextView tv_left_tuangou = (TextView) menu_left.findViewById(R.id.tv_left_tuangou);
        elv_left_menu = (ExpandableListView) menu_left.findViewById(R.id.elv_left_menu);
        tv_left_tuangou.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Group_PurchaseActivity.class);
                startActivity(intent);
            }
        });
        elv_left_menu.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                //跳转至详情页面
                Intent intent =new Intent(MainActivity.this, GoodsDetailsActivity.class);
                intent.putExtra("goods",goods.goods.get(groupPosition));
                intent.putExtra("gid",goods.goods.get(groupPosition).gsid);
                startActivity(intent);
                return false;
            }
        });

    }

    public void setType(GoodsAll goodsType) {
        goods = goodsType;
        if (myElvAdapter == null) {
            myElvAdapter = new MyElvAdapter(MainActivity.this, goods);
            elv_left_menu.setAdapter(myElvAdapter);
        } else {
            myElvAdapter.notifyDataSetChanged();
        }
    }

    public void rightMenu() {
        // 初始化SlidingMenu对象
        menu_right = new SlidingMenu(this);

        // 设置侧滑方式为左侧侧滑
        menu_right.setMode(SlidingMenu.RIGHT);
        iv_myself.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                menu_right.showMenu();
            }
        });
        /*
         * 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
         * SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
         * 不响应触摸事件
         */
        menu_right.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        // 设置阴影的宽度
        menu_right.setShadowWidthRes(R.dimen.shadow_width);
        // 设置阴影的图片
        // menu.setShadowDrawable(R.drawable.ic_launcher);
        // 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
        menu_right.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        // 设置滑动时的渐变程度
        menu_right.setFadeDegree(0.35f);
        // 使SlidingMenu附加在Activity右边
        // SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
        // SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
        menu_right.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        // 设置SlidingMenu关联的布局
        menu_right.setMenu(R.layout.right_menu);

        //找控件
        LinearLayout ll_right_login = (LinearLayout) menu_right.findViewById(R.id.ll_right_login);
        iv_right_login = (ImageView) menu_right.findViewById(R.id.iv_right_login);
        tv_right_name = (TextView) menu_right.findViewById(R.id.tv_right_name);
        TextView tv_right_address = (TextView) menu_right.findViewById(R.id.tv_right_address);
        tv_right_study = (TextView) menu_right.findViewById(R.id.tv_right_study);
        Button btn_myspace = (Button) menu_right.findViewById(R.id.btn_myspace);
        Button btn_mycollect = (Button) menu_right.findViewById(R.id.btn_mycollect);
        Button btn_order = (Button) menu_right.findViewById(R.id.btn_order);
        Button btn_myhongbao = (Button) menu_right.findViewById(R.id.btn_myhongbao);
        Button btn_exit_login = (Button) menu_right.findViewById(R.id.btn_exit_login);
        bt_qiandao = (Button) menu_right.findViewById(R.id.bt_qiandao);

        Button tv_share = (Button) menu_right.findViewById(R.id.tv_share);

//生成二维码
        tv_share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,ErWeiMaActivity.class);
                startActivity(intent);

            }
        });


//        tv_time = (TextView)menu_right.findViewById(R.id.tv_qiandaotime);
        SetTime();
        tv_right_address.setText("北京");
        //设置监听
        iv_right_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivityForResult(intent, 100);
            }
        });
        btn_myspace.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                }else{
                    Intent intent = new Intent(MainActivity.this, MySpaceActivity.class);
                    startActivity(intent);
                }
            }
        });
        btn_mycollect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                } else {
                    Intent intent = new Intent(MainActivity.this, MyCollect_Activity.class);
                    startActivity(intent);
                }
            }
        });
        btn_order.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                }else{
                    Intent intent = new Intent(MainActivity.this, ShopCart_Activity.class);
                    startActivity(intent);
                }
            }
        });
        btn_myhongbao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                }else{
                    Intent intent = new Intent(MainActivity.this, PacketActivity.class);
                    startActivity(intent);
                }
            }
        });
        btn_exit_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int uid = application.getUid();
                if (uid == 0) {
                    Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
                } else {
                    application.setUid(0);
                    Toast.makeText(MainActivity.this, "推出成功", Toast.LENGTH_SHORT).show();
                }
            }
        });

        //签到功能
        bt_qiandao.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
                if (my_rmb_data.getString(TodayTime, "").toString().equals(str) == true) {
                    Toast.makeText(MainActivity.this, "今日已签到!", Toast.LENGTH_SHORT).show();
                } else {
                    my_rmb_data.edit()
                            .putString(TodayTime, str)
                            .commit();
//                    tv_time.setText("日期:"+ str +"已签到!");
//                    bt_qiandao.setBackgroundResource(R.drawable.yqd);
                    Toast.makeText(MainActivity.this, "签到成功!", Toast.LENGTH_SHORT).show();
                    bt_qiandao.setText(str + "已签到!");
                    //请求数据
                    getDataQiaoDao();

                }
            }

            /**
             * 签到数据
             */
            private void getDataQiaoDao() {
                new Thread() {
                    @Override
                    public void run() {
                        super.run();
                        MyApplication application = (MyApplication) getApplication();
                        String path = "http://169.254.156.130:8080/lingliServer/user.do?action=userSignIn&uid=" + application.getUid();
                        try {
                            URL url = new URL(path);
                            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                            if (200 == httpURLConnection.getResponseCode()) {
                                String json = ToStringUtils.getString(httpURLConnection.getInputStream());
                                JSONObject jsonObject = new JSONObject(json);
                                JSONObject aPackage = jsonObject.optJSONObject("signin");
                                int count = aPackage.optInt("count");
                                System.out.println("------------" + count);
                                /**
                                 * 添加到用户
                                 */
                                handler.sendEmptyMessage(count);

//
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        });
    }

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int what = msg.what;
            application.setConut(application.getConut() + what);
            tv_right_study.setText("学习币:" + application.getConut());
        }
    };

    private void jianTing() {
        rb_shouye.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction beginTransaction = manager.beginTransaction();
                beginTransaction.show(shouye_fragment);
                beginTransaction.hide(zuopin_fragment);
                beginTransaction.hide(add_fragment);
                beginTransaction.hide(kecheng_fragment);
                beginTransaction.hide(shop_fragment);
                tv_lingli.setText("玲丽学习平台");
                beginTransaction.commit();
            }
        });
        rb_zuopin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction beginTransaction = manager.beginTransaction();
                beginTransaction.show(zuopin_fragment);
                beginTransaction.hide(shouye_fragment);
                beginTransaction.hide(add_fragment);
                beginTransaction.hide(kecheng_fragment);
                beginTransaction.hide(shop_fragment);
                tv_lingli.setText("作品展示");
                beginTransaction.commit();
            }
        });
        rb_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow.showAtLocation(rb_add, Gravity.CENTER | Gravity.BOTTOM, 20, 20);
            }
        });
        rb_kecheng.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction beginTransaction = manager.beginTransaction();
                beginTransaction.show(kecheng_fragment);
                beginTransaction.hide(zuopin_fragment);
                beginTransaction.hide(add_fragment);
                beginTransaction.hide(shouye_fragment);
                beginTransaction.hide(shop_fragment);
                tv_lingli.setText("课程展示");
                beginTransaction.commit();
            }
        });
        rb_shop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction beginTransaction = manager.beginTransaction();
                beginTransaction.show(shop_fragment);
                beginTransaction.hide(zuopin_fragment);
                beginTransaction.hide(add_fragment);
                beginTransaction.hide(kecheng_fragment);
                beginTransaction.hide(shouye_fragment);
                tv_lingli.setText("微商店");
                beginTransaction.commit();
            }
        });
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        MyWindowManager.removeSmallWindow(this);
    }

    @Override
    protected void onRestart() {
        super.onRestart();

        int conut = application.getConut();
        tv_right_study.setText("学习币:" + conut);
    }

    @Override
    protected void onResume() {
        super.onResume();
        MyWindowManager.createSmallWindow(this);
        int conut = application.getConut();
        tv_right_study.setText("学习币:" + conut);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
            if (requestCode == 100) {
                String img = data.getStringExtra("img");
                String name = data.getStringExtra("name");
                int count = data.getIntExtra("count", 0);

//                System.out.println("============>>>"+count);
                DisplayImageOptions yuan_options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(100)).build();
                ImageLoader.getInstance().displayImage(img, iv_right_login, yuan_options);
                ImageLoader.getInstance().displayImage(img, iv_myself, yuan_options);
                tv_right_name.setText(name);
                tv_right_study.setText("学习币:" + count);
            }
        }
    }
    private void initLocation() {
        LocationClientOption option = new LocationClientOption();

        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
        int span = 1000;
        option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);//可选,默认false,设置是否使用gps
        option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
        option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
        option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
        option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
        option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
        option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
        mLocationClient.setLocOption(option);
    }

    public class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            MainActivity.this.location = location;

        }
    }
    /**
     * 版本更新的方法
     */
    private void updateVersion() {
        dialog = new AlertDialog.Builder(MainActivity.this).setTitle("升级提醒")
                .
                // setIcon(R.drawable.app_icon).
                        setPositiveButton("在线升级", onclick)
                .setNegativeButton("不想升级", null).create();
        // 开启线程
        new Thread(new CheckVersionTask()).start(); // 检查版本号
    }

    private AlertDialog dialog;
    /**
     * 版本更新的消息机制
     *
     */
    private Handler bbhandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);

            switch (msg.what) {
                case 0:
                    dialog.setMessage(updateEntity.getDescription());
                    dialog.show();
                    break;

                case 1:
                    downLoadApk();
                    break;
            }

        }

    };

    /**
     * 版本更新的对话框的监听
     */
    DialogInterface.OnClickListener onclick = new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            bbhandler.sendEmptyMessage(1);
        }

    };

    /**
     * 从服务器中下载APK
     */
    protected void downLoadApk() {
        final ProgressDialog pd; // 进度条对话框
        pd = new ProgressDialog(this);
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setMessage("正在下载更新");
        pd.show();
        new Thread() {
            @Override
            public void run() {
                try {
                    File file = getFileFromServer(updateEntity.getUrl(), pd);
                    sleep(3000);

                    UpdateTools tools = new UpdateTools();
                    // 安装APk
                    tools.installApk(file, MainActivity.this);
                    pd.dismiss(); // 结束掉进度条对话框
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    /**
     * 从服务器获取xml解析并进行比对版本号
     */
    public class CheckVersionTask implements Runnable {

        public void run() {
            try {
                // 从资源文件获取服务器 地址
                String path = "http://169.254.156.130:8080/lingliupdate_file.xml";
                Log.i("msg", "获取数据成功!");
                // 包装成url的对象
                URL url = new URL(path);
                Log.i("msg", "url获取数据成功!");
                HttpURLConnection conn = (HttpURLConnection) url
                        .openConnection();
                conn.setConnectTimeout(5000);
                InputStream is = conn.getInputStream();
                updateEntity = UpdateTools.getUpdataInfo(is);
                // 当前版本号
                int versionCode = MainActivity.this.getPackageManager()
                        .getPackageInfo(MainActivity.this.getPackageName(), 0).versionCode;

                if (Integer.parseInt(updateEntity.getVersion()) <= versionCode) {
                    Log.i("xxx", "版本号相同无需升级");
                } else {
                    Log.i("xxxx", "版本号不同 ,提示用户升级 ");
                    bbhandler.sendEmptyMessage(0);

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 下载新版本方法
     *
     *
     *
     *
     *
     */
    public File getFileFromServer(String path, ProgressDialog pd)
            throws Exception {
        // 如果相等的话表示当前的sdcard挂载在手机上并且是可用的
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            // 获取到文件的大小
            pd.setMax(conn.getContentLength());
            InputStream is = conn.getInputStream();
            File file = new File(Environment.getExternalStorageDirectory(),
                    "updata.apk");
            FileOutputStream fos = new FileOutputStream(file);
            BufferedInputStream bis = new BufferedInputStream(is);
            byte[] buffer = new byte[1024];
            int len;
            int total = 0;
            while ((len = bis.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
                total += len;
                // 获取当前下载量
                pd.setProgress(total);
            }
            fos.close();
            bis.close();
            is.close();
            return file;
        } else {
            return null;
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值