content: package com.android.server.backup;
  
  
  import android.app.backup.BlobBackupHelper;
  import android.app.usage.UsageStatsManagerInternal;
  import android.content.Context;
  import android.os.UserHandle;
  import android.util.Log;
  
  import com.android.server.LocalServices;
  
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
  import java.io.DataInputStream;
  import java.io.DataOutputStream;
  import java.io.IOException;
  
  public class UsageStatsBackupHelper extends BlobBackupHelper {
      static final String TAG = "UsgStatsBackupHelper";   // must be < 23 chars
      static final boolean DEBUG = false;
  
      // Current version of the blob schema
      static final int BLOB_VERSION = 1;
  
      // Key under which the payload blob is stored
      // same as UsageStatsDatabase.KEY_USAGE_STATS
      static final String KEY_USAGE_STATS = "usage_stats";
  
      public UsageStatsBackupHelper(Context context) {
          super(BLOB_VERSION, KEY_USAGE_STATS);
      }
  
      @Override
      protected byte[] getBackupPayload(String key) {
          if (KEY_USAGE_STATS.equals(key)) {
              UsageStatsManagerInternal localUsageStatsManager =
                      LocalServices.getService(UsageStatsManagerInternal.class);
              ByteArrayOutputStream baos = new ByteArrayOutputStream();
              DataOutputStream out  = new DataOutputStream(baos);
              try {
                  out.writeInt(UserHandle.USER_SYSTEM);
                  out.write(localUsageStatsManager.getBackupPayload(UserHandle.USER_SYSTEM, key));
              } catch (IOException ioe) {
                  if (DEBUG) Log.e(TAG, "Failed to backup Usage Stats", ioe);
                  baos.reset();
              }
              return baos.toByteArray();
          }
          return null;
      }
  
  
      @Override
      protected void applyRestoredPayload(String key, byte[] payload)  {
          if (KEY_USAGE_STATS.equals(key)) {
              UsageStatsManagerInternal localUsageStatsManager =
                      LocalServices.getService(UsageStatsManagerInternal.class);
              DataInputStream in = new DataInputStream(new ByteArrayInputStream(payload));
              try {
                  int user = in.readInt();
                  byte[] restoreData = new byte[payload.length - 4];
                  in.read(restoreData, 0, restoreData.length);
                  localUsageStatsManager.applyRestoredPayload(user, key, restoreData);
              } catch (IOException ioe) {
                  if (DEBUG) Log.e(TAG, "Failed to restore Usage Stats", ioe);
              }
          }
      }
  }
  