版本更新

来源:互联网 发布:linux 培训 编辑:程序博客网 时间:2024/06/05 08:55
package com.exbawei.liteli.xutils;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.TextView;import android.widget.Toast;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.io.File;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);            TextView tv= (TextView) findViewById(R.id.tv);        tv.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                x.Ext.init(getApplication());                x.http().get(new RequestParams("http://mapp.qzone.qq.com/cgi-bin/mapp/mapp_subcatelist_qq?yyb_cateid=-10&categoryName=%E8%85%BE%E8%AE%AF%E8%BD%AF%E4%BB%B6&pageNo=1&pageSize=20&type=app&platform=touch&network_type=unknown&resolution=412x732"), new Callback.CommonCallback<String>() {                    @Override                    public void onSuccess(String result) {                        try {                            JSONObject jsonObject = new JSONObject(result);                            JSONArray jsonArray = jsonObject.getJSONArray("app");                            JSONObject jo = jsonArray.getJSONObject(0);                            String url = jo.getString("url");                            String version = jo.getString("versionName");                            Log.i("xxx", "url:" + url + ",versionName:" + version);                            String versionName = getVersionName();                            System.out.println(versionName);                    /*if (version.compareTo(versionName) > 0) {                        showChoiseDialog(url);                    }*/                            showChoiseDialog(url);                        } catch (JSONException e) {                            e.printStackTrace();                        }                    }                    @Override                    public void onError(Throwable ex, boolean isOnCallback) {                    }                    @Override                    public void onCancelled(CancelledException cex) {                    }                    @Override                    public void onFinished() {                    }                });            }        });    }    /**     * 显示更新选择对话框     *     * @param url     */    private void showChoiseDialog(final String url) {        android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);        android.app.AlertDialog dialog = null;        builder.setTitle("版本更新");        builder.setMessage("检测到新版本,是否下载更新?");        builder.setPositiveButton("是", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                downLoadApk(url);            }        });        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                dialog.cancel();            }        });        dialog = builder.create();        dialog.setCanceledOnTouchOutside(false);        dialog.show();    }    /**     * 从服务器中下载APK     */    private void downLoadApk(String path) {        RequestParams params = new RequestParams(path);        //自定义保存路径 Environment.getExternalStorageDirectory() sdcard 根目录        params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/app/");        //自动为文件命令        params.setAutoRename(true);        x.http().post(params, new Callback.ProgressCallback<File>() {            //网络请求成功时回调            @Override            public void onSuccess(File result) {                Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();                //apk下载完成后 调用系统的安装方法                Intent intent = new Intent(Intent.ACTION_VIEW);                intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive");                startActivity(intent);                Toast.makeText(MainActivity.this, "安装成功", Toast.LENGTH_SHORT).show();            }            //网络请求错误时回调            @Override            public void onError(Throwable ex, boolean isOnCallback) {            }            //网络请求取消的时候回调            @Override            public void onCancelled(CancelledException cex) {            }            //网络请求完成的时候回调            @Override            public void onFinished() {            }            //网络请求之前回调            @Override            public void onWaiting() {            }            //网络请求开始的时候回调            @Override            public void onStarted() {            }            //下载的时候不断回调的方法            @Override            public void onLoading(long total, long current, boolean isDownloading) {                //文件总大小和当前进度                Log.i("xxx", total + "," + current);            }        });    }    /**     * 获取版本名称     */    private String getVersionName() {        // 获取packagemanager的实例        PackageManager packageManager = getPackageManager();        // getPackageName()是你当前类的包名,0代表是获取版本信息        PackageInfo info = null;        try {            info = packageManager.getPackageInfo(getPackageName(), 0);        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        String versionName = info.versionName;        return versionName;    }    /**     * 获取版本号     *     * @return     * @throws Exception     */    public String getVersionCode() {        // 获取packagemanager的实例        PackageManager packageManager = getPackageManager();        // getPackageName()是你当前类的包名,0代表是获取版本信息        PackageInfo packInfo = null;        try {            packInfo = packageManager.getPackageInfo(getPackageName(), 0);        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        String versionCode = String.valueOf(packInfo.versionCode);        return versionCode;    }}
<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
compile 'org.xutils:xutils:3.5.0'compile 'org.jsoup:jsoup:1.9.2'



 
原创粉丝点击