package com.yeshi.appupdate;
|
|
import org.apache.http.Header;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.DialogInterface.OnClickListener;
|
import android.content.Intent;
|
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.net.ConnectivityManager;
|
import android.net.NetworkInfo;
|
import android.os.Bundle;
|
import androidx.core.content.ContextCompat;
|
import android.telephony.TelephonyManager;
|
import android.text.Html;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.JsonSyntaxException;
|
import com.google.gson.reflect.TypeToken;
|
import com.loopj.android.http.TextHttpResponseHandler;
|
import com.yeshi.appupdate.api.AppUpdateAPI;
|
import com.yeshi.appupdate.entity.UpdateBean;
|
import com.yeshi.appupdate.service.DownLoadFileService;
|
import com.yeshi.appupdate.util.StringUtils;
|
import com.yeshi.appupdate.view.CustomDialog;
|
|
public class AppUpdate {
|
|
private static String mKey;
|
|
private static Activity mActivity;
|
|
private static AppUpdate appUpdate;
|
|
private boolean isWifi = false;
|
|
private static boolean isCheck = false;
|
|
public AppUpdate() {
|
ConnectivityManager connectMgr = (ConnectivityManager) mActivity
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
NetworkInfo info = connectMgr.getActiveNetworkInfo();
|
if (info != null) {
|
isWifi = info.getType() == ConnectivityManager.TYPE_WIFI ? true
|
: false;
|
}
|
getUpdateInfo();
|
}
|
|
/**
|
* 获取更新信息
|
*/
|
private void getUpdateInfo() {
|
TelephonyManager manager = (TelephonyManager) mActivity
|
.getSystemService(Activity.TELEPHONY_SERVICE);
|
String deviceId="";
|
if (ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED
|
|| ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
|
deviceId = manager.getDeviceId();// 获取deviceId
|
}
|
int versionCode = 1;// 版本号
|
try {
|
versionCode = mActivity.getPackageManager().getPackageInfo(
|
mActivity.getPackageName(),
|
PackageManager.GET_CONFIGURATIONS).versionCode;
|
} catch (NameNotFoundException e) {
|
e.printStackTrace();
|
}
|
|
AppUpdateAPI.getAppUpdateInfo(mActivity, deviceId, "Android", mKey,
|
versionCode + "", new TextHttpResponseHandler() {
|
|
@Override
|
public void onSuccess(int statusCode, Header[] headers,
|
String responseString) {
|
if (StringUtils.isEmpty(responseString)) {
|
return;
|
}
|
JSONObject jsonObject = null;
|
try {
|
jsonObject = new JSONObject(responseString);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (Integer.parseInt(jsonObject.optString("code")) == 0) {
|
Gson gson = new GsonBuilder().setPrettyPrinting()
|
.create();
|
UpdateBean info = null;
|
try {
|
info = gson.fromJson(
|
jsonObject.getJSONObject("data")
|
.toString(),
|
new TypeToken<UpdateBean>() {
|
}.getType());
|
} catch (JsonSyntaxException e) {
|
e.printStackTrace();
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
if (info.isSilent() && isWifi) {
|
// 自动开始下载
|
try {
|
Intent intent = new Intent(mActivity,
|
DownLoadFileService.class);
|
mActivity.stopService(intent);
|
} catch (Exception e) {
|
}
|
try {
|
Bundle bundle = new Bundle();
|
bundle.putString("downloadurl",
|
info.getLink());
|
Intent intent = new Intent(mActivity,
|
DownLoadFileService.class);
|
intent.putExtras(bundle);
|
mActivity.startService(intent);
|
} catch (Exception e) {
|
}
|
} else {
|
if (!mActivity.isFinishing())
|
updateDialog(info);// 弹出更新提示框
|
}
|
} else if (jsonObject.optInt("code") == 1) {
|
if (isCheck)
|
Toast.makeText(mActivity, "当前版本为最新版本", Toast.LENGTH_LONG).show();
|
} else {
|
if (isCheck)
|
Toast.makeText(mActivity, jsonObject.optString("msg"), Toast.LENGTH_LONG).show();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
}
|
});
|
}
|
|
private void updateDialog(final UpdateBean info) {
|
CustomDialog.Builder builder = new CustomDialog.Builder(mActivity);
|
builder.setTitle("软件更新提示");
|
builder.setVersion(info.getVersion());
|
builder.setSize(info.getSize());
|
builder.setMessage(Html.fromHtml(info.getIntroduction()) + "");
|
builder.setNoti_WIFI(isWifi);
|
builder.setPositiveButton("立即升级", new OnClickListener() {
|
|
@Override
|
public void onClick(DialogInterface arg0, int arg1) {
|
// 下载
|
try {
|
Intent intent = new Intent(mActivity,
|
DownLoadFileService.class);
|
mActivity.stopService(intent);
|
} catch (Exception e) {
|
}
|
try {
|
Bundle bundle = new Bundle();
|
bundle.putString("downloadurl", info.getLink());
|
Intent intent = new Intent(mActivity
|
.getApplicationContext(), DownLoadFileService.class);
|
intent.putExtras(bundle);
|
mActivity.startService(intent);
|
} catch (Exception e) {
|
}
|
arg0.dismiss();
|
}
|
});
|
builder.setNegativeButton("暂不升级", new OnClickListener() {
|
|
@Override
|
public void onClick(DialogInterface arg0, int arg1) {
|
if (info.isForce()) {
|
mActivity.finish();
|
}
|
arg0.dismiss();
|
}
|
});
|
builder.create().show();
|
}
|
|
/**
|
* 获取key
|
*
|
* @param key
|
*/
|
public static void setAppUpdateKey(String key) {
|
if (key != null && key.length() > 0) {
|
mKey = key;
|
}
|
}
|
|
/**
|
* 获取activity
|
*
|
* @param activity
|
*/
|
public static void setAppUpdateActivity(Activity activity, boolean check) {
|
if (activity != null) {
|
mActivity = activity;
|
isCheck = check;
|
}
|
}
|
|
/**
|
* 初始化
|
*/
|
public static void initAppUpdate() {
|
if (appUpdate == null) {
|
appUpdate = new AppUpdate();
|
}
|
}
|
|
/**
|
* 销毁appUpdate
|
*/
|
public static void destoryAppUpdate() {
|
if (appUpdate != null) {
|
appUpdate = null;
|
}
|
}
|
}
|