关于版本更新

package com.bwie.activity;

import java.io.File;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.bwie.view.NetWorkHelper;
import com.bwie.vo.DownLoadManager;
import com.bwie.vo.Up_Data;
import com.bwie.vo.Versions;
import com.example.yunifa_veryg.R;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.util.Xml;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 吕仙涛
 * 主页  实现四个模块的切换
 * @author Administrator
 * @date 2016-7-7
 */

public class HomeActivity extends FragmentActivity implements OnClickListener{

private Button home_but_home;
    private Button home_but_sort;
    private Button home_but_cart;
    private Button home_but_user;
    private Fragment[] allfrag;
    private FragmentManager manger;
    private FragmentTransaction trans;
    private TextView home_but_home_tv;
    private TextView home_but_sort_tv;
    private TextView home_but_cart_tv;
    private TextView home_but_user_tv;
    private Context context;
    private TextView home_city_name;
    private long mExitTime;
    private Up_Data list_ver;
    private String apkUrl = "http://m.yunifang.com/yunifang/mobile/version?random=67603&encode=e441af3089cbeeb6b58ac72393a66667&clientType=android&clientVersion=10000";
    public LocationClient mLocationClient = null;
    public BDLocationListener myListener = new MyLocationListener();
    
    
//      Handler handler = new Handler(){
//            @Override
//            public void handleMessage(Message msg) {
//                String xml = (String) msg.obj;
//             vutils.jiexiApkData(xml);
//            }
//        };
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.home_activity_index);
        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener( myListener );    //注册监听函数

//找控件
        init();
        //百度定位
        initLocation();
        //加监听
        Listener();

//fragment事务管理切换
        fragmanager();    
        //网络判断
        internet();
        
        
        //更新
        
    //    vutils();
        jiexiApkData();
    }
   private void vutils() {
        // TODO Auto-generated method stub
//       vutils = new VersionUpdateUtils();
//           vutils.reguestAPKData(HomeActivity.this);
    }

public void jiexiApkData() {
        
        
        HttpUtils utils = new HttpUtils();
        utils.send(HttpMethod.GET,apkUrl, new RequestCallBack<String>() {

@Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub
                
            }

@Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                
                Gson g = new Gson();
                Versions json = g.fromJson(arg0.result, Versions.class);
                System.out.println(arg0.result);
                list_ver = json.getData();
                //String version = list_ver.get(0).getVersion_Name();
                System.out.println("==========="+list_ver.getVersion_Name());
                
                // 判断更新
                panduanUpdate();
                
            }
        });
        
    }

private void panduanUpdate() {
    // TODO Auto-generated method stub
         try {
              PackageManager manager = this.getPackageManager();
              PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
              String version = info.versionName;
              System.out.println("版本号"+version+list_ver.getVersion_Name());
              if (version!=list_ver.getVersion_Name()) {
                  System.out.println("========="+list_ver.getVersion_Name());
                    initAlert();
                }else{
                    Toast.makeText(getApplicationContext(), "要更新了", 0).show();
                }
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
         }
}
    private void initAlert() {
        try {
            Toast.makeText(getApplicationContext(), "更新给糖吃", 0).show();
            AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
            builder.setTitle("软件版本更新");
            builder.setMessage(list_ver.getDescription());
            builder.setPositiveButton("立即更新",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // 点击立即下载更新包
                            downLoadApk();
                        }
                    });
            builder.setNegativeButton("以后再说",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

}
                    });

AlertDialog alertDialog = builder.create();
            alertDialog.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    protected void downLoadApk() {

final ProgressDialog pd; // 进度条对话框

pd = new ProgressDialog(context);

pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pd.setMessage("正在下载更新");

pd.show();
        // 进行下载操作
        new Thread() {

@Override
            public void run() {

try {
                    // 下载
                    File file = DownLoadManager.getFileFromServer(
                            list_ver.getUrl(), pd);

sleep(3000);
                    // 安装
                    installApk(file);

pd.dismiss(); // 结束掉进度条对话框

} catch (Exception e) {

}

}
        }.start();
    }
    protected void installApk(File file) {

Intent intent = new Intent();

// 执行动作

intent.setAction(Intent.ACTION_VIEW);

// 执行的数据类型

intent.setDataAndType(Uri.fromFile(file),
                "application/vnd.android.package-archive");

context.startActivity(intent);

}
    
    //两次返回
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
                 if ((System.currentTimeMillis() - mExitTime) > 2000) {
                         Object mHelperUtils;
                         Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
                         mExitTime = System.currentTimeMillis();

} else {
                         finish();
                 }
                 return true;
         }
         return super.onKeyDown(keyCode, event);
 }
 
          
        
    private void internet() {
        // TODO Auto-generated method stub

try {
            if(NetWorkHelper.checkNetState(getApplicationContext())){
                Toast.makeText(HomeActivity.this, "少爷 , 现在是wifi数据", Toast.LENGTH_LONG).show();
            }else if(NetWorkHelper.isNetworkRoaming(getApplicationContext())){
                Toast.makeText(getApplicationContext(), "少爷 , 现在是移动数据 !", Toast.LENGTH_LONG).show();
            }else if(NetWorkHelper.isNetworkAvailable(getApplicationContext())){
                Toast.makeText(getApplicationContext(), "少爷 , 现在有网哦!", Toast.LENGTH_LONG).show();
            }else if(NetWorkHelper.isMobileDataEnable(getApplicationContext())){
                Toast.makeText(HomeActivity.this, "少爷 , 请检查网络,现在没网哦!", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block

e.printStackTrace();
        }

}

private void Listener() {
        // TODO Auto-generated method stub
        home_but_home.setOnClickListener(this);
        home_but_sort.setOnClickListener(this);
        home_but_cart.setOnClickListener(this);
        home_but_user.setOnClickListener(this);
    }

private void initLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(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);
        mLocationClient.start();
    }

private void init() {
        // TODO Auto-generated method stub
        home_but_home = (Button) findViewById(R.id.home_but_home);
        home_but_sort = (Button) findViewById(R.id.home_but_sort);
        home_but_cart = (Button) findViewById(R.id.home_but_cart);
        home_but_user = (Button) findViewById(R.id.home_but_user);
        home_but_home_tv = (TextView)findViewById(R.id.home_but_home_tv);
        home_but_sort_tv = (TextView)findViewById(R.id.home_but_sort_tv);
        home_but_cart_tv = (TextView)findViewById(R.id.home_but_cart_tv);
        home_city_name = (TextView) findViewById(R.id.home_city_name);
        home_but_user_tv = (TextView)findViewById(R.id.home_but_user_tv);
        
        
        
        home_but_home.setBackgroundResource(R.drawable.bottom_tab_home_selected);
        home_but_home_tv.setTextColor(Color.RED);

}

private void fragmanager() {
        // TODO Auto-generated method stub
        //创建fragment
        allfrag = new Fragment[4];
        //获取事务管理
        manger = getSupportFragmentManager();
        allfrag[0] = manger.findFragmentById(R.id.home_fragment_home);
        allfrag[1] = manger.findFragmentById(R.id.home_fragment_sort);
        allfrag[2] = manger.findFragmentById(R.id.home_fragment_cart);
        allfrag[3] = manger.findFragmentById(R.id.home_fragment_user);
        //启动事物
        trans = manger.beginTransaction()
        .hide(allfrag[0])
        .hide(allfrag[1])
        .hide(allfrag[2])
        .hide(allfrag[3]);

trans.show(allfrag[0]).commit();

}

public void onClick(View v) {
        // TODO Auto-generated method stub

trans = manger.beginTransaction()
        .hide(allfrag[0])
        .hide(allfrag[1])
        .hide(allfrag[2])
        .hide(allfrag[3]);

//获取点击按钮的ID
        switch (v.getId()) {
        case R.id.home_but_home:

trans.show(allfrag[0]).commit();
            home_but_home.setBackgroundResource(R.drawable.bottom_tab_home_selected);
            home_but_sort.setBackgroundResource(R.drawable.bottom_tab_classify_normal);
            home_but_cart.setBackgroundResource(R.drawable.bottom_tab_shopping_normal);
            home_but_user.setBackgroundResource(R.drawable.bottom_tab_user_normal);
            home_but_home_tv.setTextColor(Color.RED);
            home_but_sort_tv.setTextColor(Color.BLACK);
            home_but_cart_tv.setTextColor(Color.BLACK);
            home_but_user_tv.setTextColor(Color.BLACK);
            break;
        case R.id.home_but_sort:

trans.show(allfrag[1]).commit();
            home_but_home.setBackgroundResource(R.drawable.bottom_tab_home_normal);
            home_but_sort.setBackgroundResource(R.drawable.bottom_tab_classify_selected);
            home_but_cart.setBackgroundResource(R.drawable.bottom_tab_shopping_normal);
            home_but_user.setBackgroundResource(R.drawable.bottom_tab_user_normal);
            home_but_home_tv.setTextColor(Color.BLACK);
            home_but_sort_tv.setTextColor(Color.RED);
            home_but_cart_tv.setTextColor(Color.BLACK);
            home_but_user_tv.setTextColor(Color.BLACK);
            break;

case R.id.home_but_cart:

trans.show(allfrag[2]).commit();
            home_but_home.setBackgroundResource(R.drawable.bottom_tab_home_normal);
            home_but_sort.setBackgroundResource(R.drawable.bottom_tab_classify_normal);
            home_but_cart.setBackgroundResource(R.drawable.bottom_tab_shopping_selected);
            home_but_user.setBackgroundResource(R.drawable.bottom_tab_user_normal);
            home_but_home_tv.setTextColor(Color.BLACK);
            home_but_sort_tv.setTextColor(Color.BLACK);
            home_but_cart_tv.setTextColor(Color.RED);
            home_but_user_tv.setTextColor(Color.BLACK);
            break;

case R.id.home_but_user:

trans.show(allfrag[3]).commit();
            home_but_home.setBackgroundResource(R.drawable.bottom_tab_home_normal);
            home_but_sort.setBackgroundResource(R.drawable.bottom_tab_classify_normal);
            home_but_cart.setBackgroundResource(R.drawable.bottom_tab_shopping_normal);
            home_but_user.setBackgroundResource(R.drawable.bottom_tab_user_selected);
            home_but_home_tv.setTextColor(Color.BLACK);
            home_but_sort_tv.setTextColor(Color.BLACK);
            home_but_cart_tv.setTextColor(Color.BLACK);
            home_but_user_tv.setTextColor(Color.RED);
            break;

default:
            break;
        }

}
    public class MyLocationListener implements BDLocationListener {

public void onReceiveLocation(BDLocation location) {
            String city = location.getCity();
            // String district = location.getDistrict();
            // String street = location.getStreet();
            // Address address = location.getAddress();
            // Log.i("Main", address.toString());

home_city_name.setText(city);// + "---" + street+" "+distric
        }

}
}

时间: 2024-10-14 00:00:51

关于版本更新的相关文章

微信版本更新日志分析

微信,中国在移动端时代最成功的产品.当我们审视微信的成功的时候,很多人说“是因为腾讯用户量大带量”“因为摇一摇功能方便大家约炮” ..... 这些可能是微信成功的因素之一,但一定不是微信成功的主要原因(不然,为什么同样占有腾讯资源的输入法和浏览器都没有成功). 成功从不是某一个点导致的成功,而是厚积薄发的积累,不断的修正,作出的正确的决定比错误的多,以及多方面的历史进程相互的促进,顺应大势,正如一位伟人说过,“一个人的成功既要靠自身的努力也要考虑到历史的进程”. 把微信这么多年来的更新日志整理一

iOS 检测版本更新(02)

iOS 检测版本更新 如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息. 当前运行版本信息可以通过info.plist文件中的bundle version中获取: [cpp] view plaincopy NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; CFShow(infoDic); NSString *appVersion = [infoDic

使用SAE的Storage来为Android应用提供版本更新的检查和下载功能

因为Android的市场比较分散,有时候上传和审核都麻烦.为了让用户能第一时间获得更新,接下来要实现版本检查和下载功能.先在Storage里放入应用的APK.一个json的文档或者xml文件,因为我比较喜欢用json,所以接下来就用json文档.写json文档的时候记得不要用记事本,要用Notepad++之类的文本编辑器来写,然后保存成UTF-8无BOM的格式.不然android4.0以下版本解析会有问题.更新数据的格式:{      "version": 10,      "

php版本更新工具up2server

为什么要做这个工具 之前做php 开发的时候,每次版本更新,要把修改的文件同步到服务器,都要小心翼翼,如果漏掉了文件,那就完蛋了,KPI,奖金什么的都没了. 所以写了这个工具.代码在github  https://github.com/foxswang/up2server 1. 复制 获取要上传的文件 运行 python get_upload_file.py get_upload_file.py的代码如下: #!/usr/bin/python import os import os.path i

android-关于友盟的自动版本更新(面向小白)

今天说一下关于友盟的自动版本更新(傻瓜式版本更新) 关于自动更新的话,如果让android程序猿自己写的话还是不是那么简单的(对于我这个菜鸟来说...),又要检查当前版本,又要在服务器存储新的版本,又要下载更新等,但是这些复杂的事友盟已经替我们做好了,我们只需要简单的配置一下AndroidManifest.xml文件,之后代码中只填写一句话就可以实现简单的自动版本更新,下面我说一下步骤: 下载最新版SDK的zip包,将其中的libs文件夹合并到本地工程libs子目录下.即把其中的jar文件考到l

软件工程腾讯QQ (1)优点:聊天功能比较强大。同时提供安全登陆通道,保障了用户信息的安全性。应用的人群范围比较广 缺点:要展示的信息量太多,用户个人信息容易泄露。有一些弄虚作假通过其欺骗用户上当。 (2)有使用需要自己下载 (3)版本更新修复bug,定期更新版本

1.软件工程未来的发展方向是什么? 2.编程基础不好,我能学习好软件工程吗? 3.软件工程跟物联网之间的区别与联系是什么? 4.软件工程在现实生活中有哪些应用? 5.在软件工程的分类中,如何选择一个适合自己的? 6.软件工程的学习中最难克服的阶段是什么? 7.怎样学好软件工程? 腾讯QQ (1)优点:聊天功能比较强大.同时提供安全登陆通道,保障了用户信息的安全性.应用的人群范围比较广 缺点:要展示的信息量太多,用户个人信息容易泄露.有一些弄虚作假通过其欺骗用户上当. (2)有使用需要自己下载 (

MUI 版本更新

MUI版本更新,一些js,css  就不写了. 一.app 端 1.APP html 代码 <li class="mui-table-view-cell"> <a id="update" href="#feedback" class="mui-navigate-right">版本更新</a> </li> 2.app js 代码 //=================update=

Android Sqlite 数据库版本更新

http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用 3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据的表的字段也会一直增加会改变或减少 4.这个时候就

如何关闭WordPress后台的主题、插件、版本更新通知?

由于WordPress 更新速度非常快,不论是主题 插件或是版本,每个月少说要执行个好几次,因为更新快,所以WordPress后台加入了更新通知,提醒使用者有新版本了,可以进行插件.主题或是系统更新,可是新版通常是解决旧版Bug,但很容易会产生一些未知Bug,如果你不想要冒这风险,通常可以等一个礼拜看看,没问题再行更新动作. 本来 WordPress 的好意却让有些人造成了困扰,因为有些人就是不想更新,只想用旧版,因为新版总是会加入一些额外.用不到的功能,造成程序的肥大等等问题,可是后台的更新通