版本更新(简单的方法)

来源:互联网 发布:数据挖掘工 编辑:程序博客网 时间:2024/06/14 02:23
注意:因为使用的xUtils来进行下载apk,所以要在Application里面onCreate()方法中进行加上     x.Ext.init(this);     x.Ext.setDebug(true);//主类public class MainActivity extends AppCompatActivity {    String urlVersion = "http://www.地址.com";    String urlApk = 自己定义要更新的地址    private ProgressDialog pd;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        getServierVersion(urlVersion);    }    public void getServierVersion(String url){        new AsyncTask<String,View,String>(){            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                if(CommonUtil.getAppVersion(MainActivity.this) < 2){                    showDialog(CommonUtil.getAppVersionName(MainActivity.this),"2.1.0");                }            }            @Override            protected String doInBackground(String... params) {                try {                    Thread.sleep(3000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                return null;            }        }.execute(url);    }    public void showDialog(String oldName, String newName){        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setTitle("版本更新")                .setMessage("当前最新版本为"+newName+",手机版本为"+oldName+",是否跟新")                .setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        pd = new ProgressDialog(MainActivity.this);                        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);                        pd.setMessage("正在更新...");                        pd.setMax(100);                        downLoadApk(urlApk);                    }                }).setNegativeButton("暂不更新", null).show();    }    private void downLoadApk(String urlApk) {        //设置下载地址        RequestParams params = new RequestParams(urlApk);        //设置下载文件的路径   开始时要注意判断 sd卡状态是否可用   本demo省略   //可以用,也可以不用 //        params.setSaveFilePath(Environment.getExternalStorageDirectory()+"/myapp/");        params.setSaveFilePath(getCacheDir()+"/myapp/");        //设置文件名        params.setAutoRename(true);        //使用ProgressCallback进行文件下载        x.http().get(params, new Callback.ProgressCallback<File>() {            @Override            public void onSuccess(File result) {                Toast.makeText(MainActivity.this,"下载成功,准备安装",Toast.LENGTH_SHORT).show();                Log.i("==========", "onSuccess: " + result);                //apk下载完成后,调用系统的安装方法    日考题 提供的apk有问题的  不能安装                Intent intent = new Intent(Intent.ACTION_VIEW);                intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive");                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                startActivity(intent);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {                Log.i("==========", "onError: ");                Toast.makeText(MainActivity.this,"apk下载失败",Toast.LENGTH_SHORT).show();            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {                Log.i("==========", "onError: ");                pd.cancel();            }            @Override            public void onWaiting() {            }            @Override            public void onStarted() {            }            @Override            public void onLoading(long total, long current, boolean isDownloading) {                //当前进度和文件总大小                Log.i("==========","current:"+ current +",total:"+total);                //让进度条按  XX/100的格式显示                pd.setProgress((int) (current*100/total));                pd.show();            }        });    }} //工具类
public class CommonUtil  {    //获取当前版本号    public static  int getAppVersion(Context context) {        try {            PackageManager packageManager = context.getPackageManager();            PackageInfo info = packageManager.getPackageInfo(context.getPackageName(),0);            int versionCode = info.versionCode;            return versionCode;        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return 1;    }    //获取当前版本应用的名字    public static  String  getAppVersionName(Context context){        String versionName ="";        PackageManager packageManager = context.getPackageManager();        try {            PackageInfo info = packageManager.getPackageInfo(context.getPackageName(),0);           versionName = info.versionName;        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return  versionName;    }}




 
原创粉丝点击