「java自动更新升级安卓」Java更新

博主:adminadmin 2022-11-30 15:41:10 102

本篇文章给大家谈谈java自动更新升级安卓,以及Java更新对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 安卓开发如何实现版本更新

1,在应用市场更新你的应用

2,自己找台服务,提供版本查询接口。当应用查询到有比自己更新的版本后,下载新的程序包安装

如何简单实现安卓app自动更新功能

第一步 服务器端:

服务端提供一个借口,或者网址,我这里就用的服务器是tomcat,这里提供一个网址如下:

//也就是一个json数据接口

public static final String UPDATE_URL = "";

我们来看下json数据参数:

{

//app名字

appname: "爱新闻1.1",

//服务器版本号

serverVersion: "2",

//服务器标志

serverFlag: "1",

//是否强制更新

lastForce: "1",

//apk下载地址,这里我已经下载了官方的apk,放到了服务器里面

updateurl: "",

//版本的更新的描述

upgradeinfo: "V1.1版本更新,你想不想要试一下哈!!!"

}

第二步 客户端需要实现:

首先我们要去解析服务端给的json,那么我们就要来创建一个model类了(代码过多,这里只有字段,getter和setter方法自己创建):

//app名字

private String appname;

//服务器版本

private String serverVersion;

//服务器标志

private String serverFlag;

//强制升级

private String lastForce;

//app最新版本地址

private String updateurl;

//升级信息

private String upgradeinfo;

在这里使用了一个辅助类,基本和model字段差不多:

public class UpdateInformation {

public static String appname = MyApplication.getInstance()

.getResources().getString(R.string.app_name);

public static int localVersion = 1;// 本地版本

public static String versionName = ""; // 本地版本名

public static int serverVersion = 1;// 服务器版本

public static int serverFlag = 0;// 服务器标志

public static int lastForce = 0;// 之前强制升级版本

public static String updateurl = "";// 升级包获取地址

public static String upgradeinfo = "";// 升级信息

public static String downloadDir = "wuyinlei";// 下载目录

}

在进入app的时候,这个时候如果检测到服务器端有了新的版本,就回弹出提示框,提示我们更新。这个我们在MainActivity里面处理逻辑(onCreate()方法里面):

OkhttpManager.getAsync(Config.UPDATE_URL, new OkhttpManager.DataCallBack() {

@Override

public void requestFailure(Request request, Exception e) {

}

@Override

public void requestSuccess(String result) {

try {

Log.d("wuyiunlei",result);

JSONObject object = new JSONObject(result);

UpdateInfoModel model = new UpdateInfoModel();

model.setAppname(object.getString("appname"));

model.setLastForce(object.getString("lastForce"));

model.setServerFlag(object.getString("serverFlag"));

model.setServerVersion(object.getString("serverVersion"));

model.setUpdateurl(object.getString("updateurl"));

model.setUpgradeinfo(object.getString("upgradeinfo"));

tmpMap.put(DeliverConsts.KEY_APP_UPDATE, model);

} catch (JSONException e) {

e.printStackTrace();

}

//发送广播

sendBroadcast(new Intent(UpdateReceiver.UPDATE_ACTION));

}

});

当然了,我们也要注册和结束广播:

/**

* 广播注册

*/

private void registerBroadcast() {

mUpdateReceiver = new UpdateReceiver(false);

mIntentFilter = new IntentFilter(UpdateReceiver.UPDATE_ACTION);

this.registerReceiver(mUpdateReceiver, mIntentFilter);

}

/**

* 广播卸载

*/

private void unRegisterBroadcast() {

try {

this.unregisterReceiver(mUpdateReceiver);

} catch (Exception e) {

e.printStackTrace();

}

}

接下来我们看下我们自定义的广播接收者UpdateReceiver .java:

public class UpdateReceiver extends BroadcastReceiver {

private AlertDialog.Builder mDialog;

public static final String UPDATE_ACTION = "wuyinlei_aixinwen";

private SharedPreferencesHelper mSharedPreferencesHelper;

private boolean isShowDialog;

public UpdateReceiver() {

}

public UpdateReceiver(boolean isShowDialog) {

super();

this.isShowDialog = isShowDialog;

}

@Override

public void onReceive(Context context, Intent intent) {

mSharedPreferencesHelper = mSharedPreferencesHelper

.getInstance(MyApplication.getInstance());

//当然了,这里也可以直接new处hashmap

HashMap tempMap = MyApplication.getInstance()

.getTempMap();

UpdateInfoModel model = (UpdateInfoModel) tempMap

//就是一个标志

.get(DeliverConsts.KEY_APP_UPDATE);

try {

/**

* 获取到当前的本地版本

*/

UpdateInformation.localVersion = MyApplication

.getInstance()

//包管理独享

.getPackageManager()

//包信息

.getPackageInfo(

MyApplication.getInstance()

.getPackageName(), 0).versionCode;

/**

* 获取到当前的版本名字

*/

UpdateInformation.versionName = MyApplication

.getInstance()

.getPackageManager()

.getPackageInfo(

MyApplication.getInstance()

.getPackageName(), 0).versionName;

} catch (Exception e) {

e.printStackTrace();

}

//app名字

UpdateInformation.appname = MyApplication.getInstance()

.getResources().getString(R.string.app_name);

//服务器版本

UpdateInformation.serverVersion = Integer.parseInt(model

.getServerVersion());

//服务器标志

UpdateInformation.serverFlag = Integer.parseInt(model.getServerFlag());

//强制升级

UpdateInformation.lastForce = Integer.parseInt(model.getLastForce());

//升级地址

UpdateInformation.updateurl = model.getUpdateurl();

//升级信息

UpdateInformation.upgradeinfo = model.getUpgradeinfo();

//检查版本

checkVersion(context);

}

/**

* 检查版本更新

*

* @param context

*/

public void checkVersion(Context context) {

if (UpdateInformation.localVersion UpdateInformation.serverVersion) {

// 需要进行更新

mSharedPreferencesHelper.putIntValue(

//有新版本

SharedPreferencesTag.IS_HAVE_NEW_VERSION, 1);

//更新

update(context);

} else {

mSharedPreferencesHelper.putIntValue(

SharedPreferencesTag.IS_HAVE_NEW_VERSION, 0);

if (isShowDialog) {

//没有最新版本,不用升级

noNewVersion(context);

}

clearUpateFile(context);

}

}

/**

* 进行升级

*

* @param context

*/

private void update(Context context) {

if (UpdateInformation.serverFlag == 1) {

// 官方推荐升级

if (UpdateInformation.localVersion UpdateInformation.lastForce) {

//强制升级

forceUpdate(context);

} else {

//正常升级

normalUpdate(context);

}

} else if (UpdateInformation.serverFlag == 2) {

// 官方强制升级

forceUpdate(context);

}

}

/**

* 没有新版本

* @param context

*/

private void noNewVersion(final Context context) {

mDialog = new AlertDialog.Builder(context);

mDialog.setTitle("版本更新");

mDialog.setMessage("当前为最新版本");

mDialog.setNegativeButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

}).create().show();

}

/**

* 强制升级 ,如果不点击确定升级,直接退出应用

*

* @param context

*/

private void forceUpdate(final Context context) {

mDialog = new AlertDialog.Builder(context);

mDialog.setTitle("版本更新");

mDialog.setMessage(UpdateInformation.upgradeinfo);

mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent mIntent = new Intent(context, UpdateService.class);

mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

mIntent.putExtra("appname", UpdateInformation.appname);

mIntent.putExtra("appurl", UpdateInformation.updateurl);

//启动服务

context.startService(mIntent);

}

}).setNegativeButton("退出", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// 直接退出应用

//ManagerActivity.getInstance().finishActivity();

System.exit(0);

}

}).setCancelable(false).create().show();

}

/**

* 正常升级,用户可以选择是否取消升级

*

* @param context

*/

private void normalUpdate(final Context context) {

mDialog = new AlertDialog.Builder(context);

mDialog.setTitle("版本更新");

mDialog.setMessage(UpdateInformation.upgradeinfo);

mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent mIntent = new Intent(context, UpdateService.class);

mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//传递数据

mIntent.putExtra("appname", UpdateInformation.appname);

mIntent.putExtra("appurl", UpdateInformation.updateurl);

context.startService(mIntent);

}

}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

}).create().show();

}

/**

* 清理升级文件

*

* @param context

*/

private void clearUpateFile(final Context context) {

File updateDir;

File updateFile;

if (Environment.MEDIA_MOUNTED.equals(Environment

.getExternalStorageState())) {

updateDir = new File(Environment.getExternalStorageDirectory(),

UpdateInformation.downloadDir);

} else {

updateDir = context.getFilesDir();

}

updateFile = new File(updateDir.getPath(), context.getResources()

.getString(R.string.app_name) + ".apk");

if (updateFile.exists()) {

Log.d("update", "升级包存在,删除升级包");

updateFile.delete();

} else {

Log.d("update", "升级包不存在,不用删除升级包");

}

}

}

如何关闭java自动更新

进入控制面板中去把JAVA更新给关闭就可以了。点击【开始】--【控制面板】

在控制面板中把图标改成大图标这样好找一个点。再点击【JAVA】。

Java 控制面板中点击【更新】选项卡,再把【自动检更新】复选框勾制,此时会提示你选择停止自动更新点击【不检查】----【确定】这样就把JAVA自动更新功能给关闭了。

方法二

1

点击开始---【运行】或直接按快捷键【WIN+R】调出运行工具。再输入【msconfig】点击确定。

2

在系统配置窗口中点击【启动】选项卡,再把【Java(TM) Platform SE Auto Updater】前面的那个复选勾去掉,再点击【确定】,重启一下电脑这样就关闭了JAVA自动更新的功能。

java自动更新升级安卓的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java更新、java自动更新升级安卓的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。