215 lines
7.8 KiB
Java
215 lines
7.8 KiB
Java
/*
|
|
* Copyright (C) 2009 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.backuptest;
|
|
|
|
import android.app.ListActivity;
|
|
import android.app.backup.BackupHelperDispatcher;
|
|
import android.app.backup.BackupDataInput;
|
|
import android.app.backup.BackupDataOutput;
|
|
import android.app.backup.BackupManager;
|
|
import android.app.backup.FileBackupHelper;
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.ParcelFileDescriptor;
|
|
import android.util.Log;
|
|
import android.view.View;
|
|
import android.widget.ArrayAdapter;
|
|
import android.widget.ListView;
|
|
import android.widget.Toast;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.InputStreamReader;
|
|
import java.io.IOException;
|
|
import java.io.PrintStream;
|
|
import java.text.DateFormat;
|
|
import java.util.Date;
|
|
|
|
public class BackupTestActivity extends ListActivity
|
|
{
|
|
static final String TAG = "BackupTestActivity";
|
|
|
|
static final String PREF_GROUP_SETTINGS = "settings";
|
|
static final String PREF_KEY = "pref";
|
|
static final String FILE_NAME = "file.txt";
|
|
|
|
BackupManager sBm = new BackupManager(this);
|
|
|
|
Test[] mTests = new Test[] {
|
|
new Test("Show File") {
|
|
void run() {
|
|
StringBuffer str = new StringBuffer();
|
|
str.append("Text is:");
|
|
BufferedReader reader = null;
|
|
try {
|
|
reader = new BufferedReader(new InputStreamReader(openFileInput(FILE_NAME)));
|
|
while (reader.ready()) {
|
|
str.append("\n");
|
|
str.append(reader.readLine());
|
|
}
|
|
} catch (IOException ex) {
|
|
str.append("ERROR: ");
|
|
str.append(ex.toString());
|
|
}
|
|
Log.d(TAG, str.toString());
|
|
Toast.makeText(BackupTestActivity.this, str, Toast.LENGTH_SHORT).show();
|
|
}
|
|
},
|
|
new Test("Append to File") {
|
|
void run() {
|
|
PrintStream output = null;
|
|
try {
|
|
output = new PrintStream(openFileOutput(FILE_NAME, MODE_APPEND));
|
|
DateFormat formatter = DateFormat.getDateTimeInstance();
|
|
output.println(formatter.format(new Date()));
|
|
output.close();
|
|
} catch (IOException ex) {
|
|
if (output != null) {
|
|
output.close();
|
|
}
|
|
}
|
|
sBm.dataChanged();
|
|
}
|
|
},
|
|
new Test("Clear File") {
|
|
void run() {
|
|
PrintStream output = null;
|
|
try {
|
|
output = new PrintStream(openFileOutput(FILE_NAME, MODE_PRIVATE));
|
|
output.close();
|
|
} catch (IOException ex) {
|
|
if (output != null) {
|
|
output.close();
|
|
}
|
|
}
|
|
sBm.dataChanged();
|
|
}
|
|
},
|
|
new Test("Poke") {
|
|
void run() {
|
|
sBm.dataChanged();
|
|
}
|
|
},
|
|
new Test("Show Shared Pref") {
|
|
void run() {
|
|
SharedPreferences prefs = getSharedPreferences(PREF_GROUP_SETTINGS, MODE_PRIVATE);
|
|
int val = prefs.getInt(PREF_KEY, 0);
|
|
String str = "'" + PREF_KEY + "' is " + val;
|
|
Log.d(TAG, str);
|
|
Toast.makeText(BackupTestActivity.this, str, Toast.LENGTH_SHORT).show();
|
|
}
|
|
},
|
|
new Test("Increment Shared Pref") {
|
|
void run() {
|
|
SharedPreferences prefs = getSharedPreferences(PREF_GROUP_SETTINGS, MODE_PRIVATE);
|
|
int val = prefs.getInt(PREF_KEY, 0);
|
|
SharedPreferences.Editor editor = prefs.edit();
|
|
editor.putInt(PREF_KEY, val+1);
|
|
editor.commit();
|
|
sBm.dataChanged();
|
|
}
|
|
},
|
|
new Test("Backup Helpers") {
|
|
void run() {
|
|
try {
|
|
writeFile("a", "a\naa", MODE_PRIVATE);
|
|
writeFile("empty", "", MODE_PRIVATE);
|
|
|
|
ParcelFileDescriptor state = ParcelFileDescriptor.open(
|
|
new File(getFilesDir(), "state"),
|
|
ParcelFileDescriptor.MODE_READ_WRITE|ParcelFileDescriptor.MODE_CREATE|
|
|
ParcelFileDescriptor.MODE_TRUNCATE);
|
|
FileBackupHelper h = new FileBackupHelper(BackupTestActivity.this,
|
|
new String[] { "a", "empty" });
|
|
FileOutputStream dataFile = openFileOutput("backup_test", MODE_WORLD_READABLE);
|
|
BackupDataOutput data = new BackupDataOutput(dataFile.getFD());
|
|
h.performBackup(null, data, state);
|
|
dataFile.close();
|
|
state.close();
|
|
} catch (IOException ex) {
|
|
throw new RuntimeException(ex);
|
|
}
|
|
}
|
|
},
|
|
new Test("Restore Helpers") {
|
|
void run() {
|
|
try {
|
|
BackupHelperDispatcher dispatch = new BackupHelperDispatcher();
|
|
dispatch.addHelper("", new FileBackupHelper(BackupTestActivity.this,
|
|
new String[] { "a", "empty" }));
|
|
FileInputStream dataFile = openFileInput("backup_test");
|
|
BackupDataInput data = new BackupDataInput(dataFile.getFD());
|
|
ParcelFileDescriptor state = ParcelFileDescriptor.open(
|
|
new File(getFilesDir(), "restore_state"),
|
|
ParcelFileDescriptor.MODE_READ_WRITE|ParcelFileDescriptor.MODE_CREATE|
|
|
ParcelFileDescriptor.MODE_TRUNCATE);
|
|
// TODO: a more plausable synthetic stored-data version number
|
|
dispatch.performRestore(data, 0, state);
|
|
dataFile.close();
|
|
state.close();
|
|
} catch (IOException ex) {
|
|
throw new RuntimeException(ex);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
abstract class Test {
|
|
String name;
|
|
Test(String n) {
|
|
name = n;
|
|
}
|
|
abstract void run();
|
|
}
|
|
|
|
@Override
|
|
public void onCreate(Bundle icicle) {
|
|
super.onCreate(icicle);
|
|
|
|
String[] labels = new String[mTests.length];
|
|
for (int i=0; i<mTests.length; i++) {
|
|
labels[i] = mTests[i].name;
|
|
}
|
|
|
|
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, labels));
|
|
}
|
|
|
|
@Override
|
|
public void onListItemClick(ListView l, View v, int position, long id)
|
|
{
|
|
Test t = mTests[position];
|
|
Log.d(TAG, "Test: " + t.name);
|
|
t.run();
|
|
}
|
|
|
|
void writeFile(String name, String contents, int mode) {
|
|
try {
|
|
PrintStream out = new PrintStream(openFileOutput(name, mode));
|
|
out.print(contents);
|
|
out.close();
|
|
} catch (FileNotFoundException ex) {
|
|
throw new RuntimeException(ex);
|
|
}
|
|
}
|
|
}
|
|
|