友盟更新相关
private void setUmengUpdate() {
LogUtil.v(TAG, "setUmengUpdate()");
mDownloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
boolean autoUpdate = PreferenceHelper.getInstance(this).isAutoUpdate();
long lastUpdateTime = PreferenceHelper.getInstance(this).getLastUpdateTime();
long now = System.currentTimeMillis();
boolean needUpdate = now - lastUpdateTime > TIME_THREE_DAYS;
if (autoUpdate || needUpdate) {
PreferenceHelper.getInstance(this).setKeyLastUpdateTime(now);
UmengUpdateAgent.setUpdateCheckConfig(false);
UmengUpdateAgent.update(this);
UmengUpdateAgent.setUpdateOnlyWifi(false);
UmengUpdateAgent.setUpdateAutoPopup(false);
UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
@Override
public void onUpdateReturned(int i, UpdateResponse updateResponse) {
LogUtil.v(TAG, "onUpdateReturned() response is " + updateResponse);
if (updateResponse != null && UCODE_HAS_UPDATE == i) {
showUpdateDialog(updateResponse);
}
}
});
}
}
下载更新apk:
private void startDownloadUpdateApk(String version, String path) {
LogUtil.v(TAG, "startDownloadUpdateApk() path " + path);
String fileName = AppContext.packageName + "_" + version + ".apk";
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
registerReceiver(onDownloadCompleteReceiver, filter);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(path));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
request.setMimeType(MimeUtils.getMimeTypeFromExtension(".apk"));
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
request.setTitle(getString(R.string.app_name));
request.setDescription("下载中");
mDownloadManager.enqueue(request);
}
接收下载结果广播,DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction()),最好接收广播后就把广播注销了
private void onDownloadComplete(Intent intent) {
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
LogUtil.v(TAG, "onDownloadComplete() id is " + downloadId);
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
try {
Cursor cursor = mDownloadManager.query(query);
if (cursor != null && cursor.moveToFirst()) {
int downloadStatus = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
if (downloadStatus == DownloadManager.STATUS_SUCCESSFUL) {
String path = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));
String uri = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
LogUtil.v(TAG, "onDownloadComplete() path is " + path);
LogUtil.v(TAG, "onDownloadComplete() uri is " + uri);
Utils.open(mContext, path);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}