手机安全卫士02

写Splash界面

实现效果如下
1.展示公司的logo,(展示版本号)
*展示logo,广告,宣传 done
*检测出版本 done
*初始化项目 ,拷贝assert 数据文件到 指定内部目录,一般拷贝到
/data/data//databases/

2.实现

**界面设计

**检测版本(服务器有新版本,弹出框提示是否更新,下载apk再进入)
展示Splash界面两秒

public class SplashActivity extends Activity {
    private static final int MSG_SHOW_DIALOG = 1;// 提示升级要用的对话框标记
    private static final int MSG_ENTER_HOME = 2;// 进入主界面的标记
    private static final int MSG_SERVER_ERROR = 3;// 访问服务端错误的标记
    private TextView bTextView;// 版本显示的
    private ProgressBar pb;// 进度条
    private Context context;// 上下文
    private int newVersipnCode;// 服务端版本号
    private String APK_URL;// apk下载地址
    private String des;// 服务端版本描述
    HttpUtils client = new HttpUtils();
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case MSG_SHOW_DIALOG:
                showUpdateDialog();
                break;
            case MSG_ENTER_HOME:
                enterHome();
                break;
            case MSG_SERVER_ERROR:
                enterHome();
                break;
            }

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        context = this;
        // 初始化
        initView();
        // 依据用户的配置来检验是否需要更新 ,默认是更新版本
        if (CacheUtils.getBoolean(context, CacheUtils.APK_UPDATE, true)) {
            checkupdate();// 检测更新
        } else {
            new Thread() {

                public void run() {
                    SystemClock.sleep(2000);// 休眠两秒
                    // 放到ui队列里面去
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            enterHome();
                        }

                    });
                };
            }.start();

        }
    }

    // 检测服务端是否有新版本 连接服务器 ,开辟子线程
    private void checkupdate() {
        new Thread() {
            // 访问网络
            public void run() {
                long startTime = System.currentTimeMillis();// 连接网络的开始时间
                Message message = new Message();
                try {
                    // 建立连接 设置请求
                    URL url = new URL(Constants.SERVER_VERSION_URL);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    int resultCode = connection.getResponseCode();
                    // 访问正常
                    if (resultCode == HttpURLConnection.HTTP_OK) {
                        InputStream iStream = connection.getInputStream();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(iStream));
                        String jsonResult = bufferedReader.readLine();
                        // 解析json数据
                        JSONObject jsonObject = new JSONObject(jsonResult);
                        newVersipnCode = jsonObject.getInt("code");
                        APK_URL = jsonObject.getString("apkurl");
                        des = jsonObject.getString("des");// 版本描述
                        // 比较服务端的版本号
                        if (newVersipnCode > getVersionCode()) {
                            // 提示有新版本,是否要更新
                            message.what = MSG_SHOW_DIALOG;

                            // Dialog dialog=new
                            // Dialog(context).setTitle("是否更新").show();
                        } else {
                            // 没有新版本 直接进入home界面
                            message.what = MSG_ENTER_HOME;
                            // enterHome();
                        }
                    } else {
                        // 访问服务端异常 进入homeactivity
                        message.what = MSG_SERVER_ERROR;
                        // enterHome();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    // 访问服务端异常 进入homeactivity
                    // message.what = MSG_SERVER_ERROR;
                    e.printStackTrace();
                } finally {
                    long duration = System.currentTimeMillis() - startTime;// 访问网络所耗时间
                    if (duration < 2000) {
                        SystemClock.sleep(2000 - duration);
                    }
                    // 向ui线程发消息
                    handler.sendMessage(message);
                }
            };
        }.start();

    }

    private void initView() {
        // TODO Auto-generated method stub
        bTextView = (TextView) findViewById(R.id.banbentext);
        pb = (ProgressBar) findViewById(R.id.progressBar1);
        bTextView.setText("版本号:" + getVersionCode());
    }

    private int getVersionCode() {
        // TODO Auto-generated method stub
        PackageManager packageManager = getPackageManager();
        /**
         * 取得包名 package:当前应用的包名
         * 
         */
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES);
            return packageInfo.versionCode;// 取得版本号
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 0;
    }

    // 跳转到下一个页面:homeActivity
    private void enterHome() {
        // TODO Auto-generated method stub
        Intent intent = new Intent(this, HomeActivity.class);
        startActivity(intent);
        finish();
    }

    // 显示是否要升级的对话框
    private void showUpdateDialog() {
        // TODO Auto-generated method stub
        ToastUtils.show(this, "有新的版本" + newVersipnCode + "可以更新");

        new AlertDialog.Builder(context).setTitle("新版本号" + newVersipnCode).setIcon(R.drawable.ic_logo).setMessage(des)
                .setPositiveButton("升级", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        downloadAPK();
                    }

                }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        // 进入homeActivity
                        enterHome();
                    }
                }).create().show();

    }

    // 下载apk
    private void downloadAPK() {
        // TODO Auto-generated method stub

    }
}

主要代码如上
服务器的json数据如下

{"code":6,"apkurl":"http://10.0.2.2:8080/phoneSafe.apk","des":"秋季温情版,下载有机会获取滴滴快车卷一张"}
posted @ 2016-05-05 19:55  Tesi1a  阅读(176)  评论(0编辑  收藏  举报