@Override
 public void onProgressUpdate(Integer... percentDownloaded) {
   LogUtil.e(TAG, "onProgressUpdate lengthDownloaded =" + (int) percentDownloaded[0]);
   mBuilder.setProgress(100, percentDownloaded[0], false);
   mBuilder.setContentText(
       mContext.getString(R.string.msg_update_version) + "(" + percentDownloaded[0] + "%)");
   mNotificationManager.notify(id, mBuilder.build());
 }
  /** 安装apk */
  private void installApk() {
    String fileAbsolutePath = null;
    File apkfile = null;
    //        LogUtil.e(TAG, " Environment.getExternalStorageDirectory() = "+
    // Environment.getExternalStorageDirectory());
    //        LogUtil.e(TAG, " Environment.getDownloadCacheDirectory() = "+
    // Environment.getDownloadCacheDirectory());
    //        LogUtil.e(TAG, " Environment.getDataDirectory() = "+ Environment.getDataDirectory());

    if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
      fileAbsolutePath =
          Environment.getExternalStorageDirectory()
              + File.separator
              + filePath
              + File.separator
              + fileName;
      LogUtil.e(TAG, "MEDIA_MOUNTED + fileAbsolutePath = " + fileAbsolutePath);
    } else if (Environment.getDataDirectory() != null) {
      String dataDir = Environment.getDataDirectory().toString();
      fileAbsolutePath = dataDir + File.separator + fileName;
    } else if (Environment.getDownloadCacheDirectory() != null) {
      String downloadCacheDir = Environment.getDownloadCacheDirectory().toString();
      fileAbsolutePath = downloadCacheDir + File.separator + fileName;
    } else {
      LogUtil.e(TAG, mContext.getString(R.string.error_no_usable_storage));
    }

    // LogUtil.e(TAG, "fileAbsolutePath = " + fileAbsolutePath);
    if (fileAbsolutePath != null) apkfile = new File(fileAbsolutePath);
    if (apkfile != null && !apkfile.exists()) {
      return;
    }
    // LogUtil.e(TAG, "apkfile.getAbsolutePath() = " + apkfile.getAbsolutePath());
    Intent i = new Intent(Intent.ACTION_VIEW);
    // 安装,如果签名不一致,可能出现程序未安装提示
    i.setDataAndType(
        Uri.fromFile(new File(apkfile.getAbsolutePath())),
        "application/vnd.android.package-archive");
    mContext.startActivity(i);
  }
 @Override
 public void onPostExecute(Boolean isDownloadSuccess) {
   if (isDownloadSuccess) installApk();
   else LogUtil.e(TAG, "download update apk file failed");
 }