天天看點

【Android】友盟的自動更新元件

一、缺少res導緻不能更新的問題

由于缺少了解,官網文檔也沒用提醒,僅僅拷貝了SDK的jar到工程裡,一直不知道到底更新功能是否已經實作,關鍵是也不報錯!今天又拿出來測試了一下,監聽了一下UmengUpdateListener接口,發現用戶端已經檢測到了更新,但是沒用彈出更新的對話框,然後就注意到了如下log:

W/ResourceType(7881): No known package when getting value for resource number 0xffffffff 

雖然沒用顯示和umeng有關系,還是重新更新了一下jar,并且反編譯了一下jar檢視了一下代碼,并檢查了一下sdk,果然發現少拷貝了資源檔案,res下還有drawable、layout、string還有東西,拷貝進項目即可!吐槽一下,好醜 - - # ,然後就有了下面:

二、自定義更新對話框

    /** 版本檢測 */

    private void checkVersion() {

        UmengUpdateAgent.setUpdateOnlyWifi(true);

        UmengUpdateAgent.setUpdateAutoPopup(false);

        UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {

            @Override

            public void onUpdateReturned(int updateStatus,

                    UpdateResponse updateInfo) {

                if (updateStatus == 0 && updateInfo != null) {

                    showUpdateDialog(updateInfo.path, updateInfo.updateLog);

                }

                // case 0: // has update

                // case 1: // has no update

                // case 2: // none wifi

                // case 3: // time out

            }

        });

        UmengUpdateAgent.update(this);

    }

    private void showUpdateDialog(final String downloadUrl, final String message) {

        AlertDialog.Builder updateAlertDialog = new AlertDialog.Builder(this);

        updateAlertDialog.setIcon(R.drawable.app_icon);

        updateAlertDialog.setTitle(R.string.app_name);

        updateAlertDialog.setMessage(getString(R.string.update_hint, message));

        updateAlertDialog.setNegativeButton(R.string.update_ok,

                new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                        try {

                            startActivity(new Intent(Intent.ACTION_VIEW, Uri

                                    .parse(downloadUrl)));

                        } catch (Exception ex) {

                        }

                    }

                }).setPositiveButton(R.string.dialog_no, null);

        if (!isFinishing())

            updateAlertDialog.show();

三、參考

繼續閱讀