您的位置:首页 > 其它

版本更新

2017-09-13 15:49 101 查看
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'


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