diff --git a/README.md b/README.md index 70b8f3d..9155ed7 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,14 @@ Just clone and install this demo. `cordova plugin add cordova-plugin-app-update --save` # Usage - - Simple: + +- Simple: ```js var updateUrl = "http://192.168.0.1/version.xml"; window.AppUpdate.checkAppUpdate(onSuccess, onFail, updateUrl); ``` - - Verbose + +- Verbose ```js var appUpdate = cordova.require('cordova-plugin-app-update.AppUpdate'); var updateUrl = "http://192.168.0.1/version.xml"; @@ -54,6 +56,14 @@ appUpdate.checkAppUpdate(onSuccess, onFail, updateUrl, { }) ``` +- Skip dialog boxes +```js +appUpdate.checkAppUpdate(onSuccess, onFail, updateUrl, { + 'skipPromptDialog' : true, + 'skipProgressDialog' : true +}) +``` + ### versionCode You can simply get the versionCode from typing those code in `Console` diff --git a/src/android/DownloadHandler.java b/src/android/DownloadHandler.java index 7598ce2..16dd13d 100644 --- a/src/android/DownloadHandler.java +++ b/src/android/DownloadHandler.java @@ -69,13 +69,14 @@ public void updateProgress(int progress) { } public void updateMsgDialog() { - mDownloadDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); //Update in background - mDownloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.VISIBLE); //Install Manually - mDownloadDialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.VISIBLE); //Download Again - mDownloadDialog.setTitle(msgHelper.getString(MsgHelper.DOWNLOAD_COMPLETE_TITLE)); - mDownloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL) - .setOnClickListener(downloadCompleteOnClick); + if (mDownloadDialog.isShowing()) { + mDownloadDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); //Update in background + mDownloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.VISIBLE); //Install Manually + mDownloadDialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.VISIBLE); //Download Again + + mDownloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setOnClickListener(downloadCompleteOnClick); + } } private OnClickListener downloadCompleteOnClick = new OnClickListener() { diff --git a/src/android/MsgBox.java b/src/android/MsgBox.java index 4d31e47..d5ad79e 100644 --- a/src/android/MsgBox.java +++ b/src/android/MsgBox.java @@ -61,7 +61,8 @@ public Dialog showNoticeDialog(OnClickListener onClickListener) { */ public Map showDownloadDialog(OnClickListener onClickListenerNeg, OnClickListener onClickListenerPos, - OnClickListener onClickListenerNeu) { + OnClickListener onClickListenerNeu, + boolean showDialog) { if (downloadDialog == null) { LOG.d(TAG, "showDownloadDialog"); @@ -84,14 +85,16 @@ public Map showDownloadDialog(OnClickListener onClickListenerNeg downloadDialog = builder.create(); } - if (!downloadDialog.isShowing()) downloadDialog.show(); + if (showDialog && !downloadDialog.isShowing()) downloadDialog.show(); downloadDialog.setTitle(msgHelper.getString(MsgHelper.UPDATING)); - downloadDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.VISIBLE); //Update in background - downloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.GONE); //Install Manually - downloadDialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.GONE); //Download Again - downloadDialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失 + if (downloadDialog.isShowing()) { + downloadDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.VISIBLE); //Update in background + downloadDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.GONE); //Install Manually + downloadDialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.GONE); //Download Again + } + Map ret = new HashMap(); ret.put("dialog", downloadDialog); ret.put("progress", downloadDialogProgress); diff --git a/src/android/UpdateManager.java b/src/android/UpdateManager.java index e9c91bf..36c7466 100644 --- a/src/android/UpdateManager.java +++ b/src/android/UpdateManager.java @@ -140,17 +140,31 @@ private void compareVersions() { int versionCodeLocal = version.getLocal(); int versionCodeRemote = version.getRemote(); + boolean skipPromptDialog = false; + try { + skipPromptDialog = options.getBoolean("skipPromptDialog"); + } catch (JSONException e) {} + + boolean skipProgressDialog = false; + try { + skipProgressDialog = options.getBoolean("skipProgressDialog"); + } catch (JSONException e) {} + //比对版本号 //检查软件是否有更新版本 if (versionCodeLocal < versionCodeRemote) { if (isDownloading) { - msgBox.showDownloadDialog(null, null, null); + msgBox.showDownloadDialog(null, null, null, !skipProgressDialog); mHandler.sendEmptyMessage(Constants.VERSION_UPDATING); } else { LOG.d(TAG, "need update"); - // 显示提示对话框 - msgBox.showNoticeDialog(noticeDialogOnClick); - mHandler.sendEmptyMessage(Constants.VERSION_NEED_UPDATE); + if (skipPromptDialog) { + mHandler.sendEmptyMessage(Constants.DOWNLOAD_CLICK_START); + } else { + // 显示提示对话框 + msgBox.showNoticeDialog(noticeDialogOnClick); + mHandler.sendEmptyMessage(Constants.VERSION_NEED_UPDATE); + } } } else { mHandler.sendEmptyMessage(Constants.VERSION_UP_TO_UPDATE); @@ -169,11 +183,19 @@ public void onClick(DialogInterface dialog, int which) { private void emitNoticeDialogOnClick() { isDownloading = true; + + boolean skipProgressDialog = false; + try { + skipProgressDialog = options.getBoolean("skipProgressDialog"); + } catch (JSONException e) {} + // 显示下载对话框 Map ret = msgBox.showDownloadDialog( downloadDialogOnClickNeg, downloadDialogOnClickPos, - downloadDialogOnClickNeu); + downloadDialogOnClickNeu, + !skipProgressDialog); + // 下载文件 downloadApk((AlertDialog) ret.get("dialog"), (ProgressBar) ret.get("progress")); }