您的位置:首页 > 移动开发 > Android开发

版本更新(简单的方法)

2017-09-17 10:29 176 查看
注意:因为使用的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) {
a625
//当前进度和文件总大小
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;
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐