当然你在写这个的时候需要用到一个服务器 你可以把自己的电脑当成服务器
链接:https://pan.baidu.com/s/1cGwCCA 密码:oczr
用这个服务器要配置java环境变量
配置完成之后运行bin--》startup.bat 必须一直开着
1.导包 链接:https://pan.baidu.com/s/1geSNx43 密码:u75d
2.创建一个类mama继承Application 然后初始化
public class mama extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.setDebug(true);
x.Ext.init(this);
}
}
3.在清单文件中用name调用
4.主函数
public class MainActivity extends AppCompatActivity {
//这是服务器提供的接口
String url="http://169.254.92.24:8080/22.txt";
private String upgradeinfo;
private RequestParams request;
private String appname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建请求参数.
request = new RequestParams(url);
x.http().get(request, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
try {
JSONObject json= new JSONObject(s);
//得到信息
upgradeinfo = json.getString("upgradeinfo");
// //得到最新版的apk下载地址
final String up = json.getString("updateurl");
// //得到app的名字
appname=json.getString("appname");
// //得到最新版的版本号
// json.getString("serverVersion");
// //是否强制更新 用最简单的if判断就行
// json.getString("lastForce");
//得到服务器的版本号
String serverVersion = json.getString("serverVersion");
//得到应用包的管理者
PackageInfo pack = MainActivity.this.getPackageManager().getPackageInfo(MainActivity.this.getPackageName(), 0);
//从管理者里面拿到应用版本号
int versionCode = pack.versionCode;
//判断当应用版本号低于服务器的版本号,就会提示升级
if(versionCode<Integer.valueOf(serverVersion)){
Log.d("aaaa",s);
new AlertDialog.Builder(MainActivity.this)
.setTitle("版本更新")
.setIcon(R.mipmap.ic_launcher)
.setMessage(upgradeinfo)
.setCancelable(false)//除了对话框以外都不能点击
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "你不能点我的", Toast.LENGTH_SHORT).show();
}
}).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "谁叫你点我的", Toast.LENGTH_SHORT).show();
//要下载的文件到这个地址
final String ss= Environment.getExternalStorageDirectory().getAbsolutePath()+"/downloads/";
//接口给定的最新版本下载地址
RequestParams request1 = new RequestParams(up);
//给要下载的文件取名字
request1.setSaveFilePath(ss+appname);
x.http().request(HttpMethod.GET,request1, new Callback.ProgressCallback<File>() {
@Override
public void onSuccess(File file) {
}
@Override
public void onError(Throwable throwable, boolean b) {
}
@Override
public void onCancelled(CancelledException e) {
}
@Override
public void onFinished() {
}
@Override
public void onWaiting() {
}
@Override
public void onStarted() {
}
//long l:文件总大小, long l1,当前进度.boolean b,是否正在下载
@Override
public void onLoading(long l, long l1, boolean b) {
//创建通知
NotificationManager mNotifyManager = (NotificationManager) MainActivity.this.getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
mBuilder.setContentTitle("版本更新");
//判断是否下载完成
if(l==l1){
Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
mBuilder.setContentText("下载完成");
mNotifyManager.notify(10086, mBuilder.build());
//安装下载好的APP
installApk(MainActivity.this,new File(ss,appname));
}else {
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
mBuilder.setContentTitle("版本更新");
mBuilder.setContentText("正在下载...");
//更新通知栏进度条
mBuilder.setProgress((int) l, (int) l1, false);
Notification notification = mBuilder.build();
notification.flags = Notification.FLAG_AUTO_CANCEL;
//参数1:通知id,参数:通知.
mNotifyManager.notify(10086, notification);
}
}
});
}
}).create().show();//这一步别忘记了 不然出不来对话框
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable throwable, boolean b) {
}
@Override
public void onCancelled(CancelledException e) {
}
@Override
public void onFinished() {
}
});
}
//安装下载好的APP
private void installApk(Context context, File file) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
context.startActivity(intent);
}
}
5.布局根据需求写 也可以不写