コード例 #1
0
 private IRecord getScheduleRecord() {
   List<IRecord> scheduleRecords = mBackupManager.getScheduleRecords();
   if (Util.isCollectionEmpty(scheduleRecords)) {
     return null;
   }
   final String preferSdCardPath = Util.getSdRootPathOnPreference(this);
   for (IRecord record : scheduleRecords) {
     String recordDir = ((RestorableRecord) record).getRecordRootDir();
     if (recordDir.startsWith(preferSdCardPath)) {
       return record;
     }
   }
   return scheduleRecords.get(0);
 }
コード例 #2
0
  private void backupSmsInternal(Context context, SmsBackupArgs args) {
    boolean ret = true;
    // 通知外部开始备份短信
    args.mHandler.sendEmptyMessage(SmsBackupMsg.MSG_BACKUP_START);

    // 获取短信
    Cursor cursor = getAllSmsFromDB(context);
    File file = new File(args.mBackupFilePath);
    try {
      if (cursor == null || cursor.getCount() <= 0) {
        Message.obtain(args.mHandler, SmsBackupMsg.MSG_SMS_COUNT_ZERO).sendToTarget();
        return;
      }

      // 写文件
      if (!writeSmsToDatFile(cursor, file, args.mHandler)) {
        // 写文件失败
        args.mHandler.sendEmptyMessage(SmsBackupMsg.MSG_BACKUP_ERROR_OCCUR);
        return;
      }
    } finally {
      if (cursor != null) {
        cursor.close();
      }
    }

    // 按照需求,如果用户取消,则删除文件
    synchronized (mLock) {
      if (mStopFlag) {
        file.delete();
        return;
      }
    }

    // 加密
    if (args.mNeedEncrypt && args.mEncryptPassword != null) {
      File tempFile = new File(file.getParent(), "sms.temp");
      String srcFileName = file.getAbsolutePath();
      if (!Util.encryFile(file, tempFile, args.mEncryptPassword)) {
        // 删除所有文件
        tempFile.delete();
        file.delete();
        ret = false;
      } else {
        // 删除源文件
        file.delete();
        tempFile.renameTo(new File(srcFileName));
        ret = true;
      }
    }

    if (!ret) {
      args.mHandler.sendEmptyMessage(SmsBackupMsg.MSG_BACKUP_ERROR_OCCUR);
      return;
    }

    args.mHandler.sendEmptyMessage(SmsBackupMsg.MSG_BACKUP_END);
  }
コード例 #3
0
  public TutorialView(Context context, int layoutId, int spotlightResId, Rect bound) {
    super(context);
    LayoutInflater.from(context).inflate(layoutId, this, true);
    setBackgroundColor(0x00000000);
    mOriginalBound = bound;
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
    mSpotlightBitmap = BitmapFactory.decodeResource(getResources(), spotlightResId);

    // 关闭硬件加速功能
    Util.setHardwareAccelerated(this, Util.LAYER_TYPE_SOFTWARE);
  }
コード例 #4
0
 @Override
 public boolean loadIcon(Context context) {
   boolean ret = false;
   if (context != null) {
     mInitingIcon = true;
     Drawable icon = Util.loadIconFromPackageName(context, GOLAUNCHER_PACKAGE_NAME);
     if (icon != null) {
       setIcon(icon);
       ret = true;
     } else {
       ret = false;
     }
     mInitingIcon = false;
   }
   return ret;
 }
コード例 #5
0
  private long calculateAllToMergeRecordSize() {
    //		List<IRecord> normalRecords = mBackupManager.getAllRestoreRecords();
    List<RecordItem> recordItemList = ((RecordItemListAdapter) mAdapter).getRecordItemList();
    if (Util.isCollectionEmpty(recordItemList)) {
      return 0;
    }

    long totalSize = 0;
    for (RecordItem recordItem : recordItemList) {
      if (recordItem != null && recordItem.isSelected) {
        totalSize += recordItem.record.getSpaceUsage();
      }
    }

    return totalSize;
  }