A
AlexRock
Neues Mitglied
- 0
Hallo,
ich versuche derzeit, eine einzelne App aus einer ListView auszuwählen und diese zu sichern.
(Ich weiss nicht genau wie ich das Ausgewählte Element der ListView nutze)
Mein Ansatz dazu sieht folgendermassen aus:
Aufgerufen wird:
Ich habe meinen Code, mit dem ich alle Apps sichern kann als Vorlage genommen. (Hier damit ihr einen Vergleich habt)
Aufgerufen wird dort:
ich versuche derzeit, eine einzelne App aus einer ListView auszuwählen und diese zu sichern.
(Ich weiss nicht genau wie ich das Ausgewählte Element der ListView nutze)
Mein Ansatz dazu sieht folgendermassen aus:
Code:
private ProgressDialog backup_app;
backup_app = ProgressDialog.show(MainActivity.this,
"Sicherung", "", true, false);
Thread backup_app = new Thread(new BackupApp());
backup_app.start();
Code:
private static final String BACKUP_LOC = Environment
.getExternalStorageDirectory() + "/InfoBackup/";
private static final int SET_PROGRESS = 0x00;
private static final int FINISH_PROGRESS = 0x01;
private ProgressDialog backup_app;
private List<App> mApps;
private App info;
private class BackupApp implements Runnable {
private static final int BUFFER = 1024;
private File mDir = new File(BACKUP_LOC);
private byte[] mData;
public BackupApp() {
mData = new byte[BUFFER];
/* create dir if needed */
File d = new File(BACKUP_LOC);
if (!d.exists()) {
d.mkdir();
// then create this directory
mDir.mkdir();
} else {
if (!mDir.exists())
mDir.mkdir();
}
}
public void run() {
BufferedInputStream mBuffIn;
BufferedOutputStream mBuffOut;
Message msg;
int read = 0;
info = (App) mAppsList.getSelectedItem();
String source_file = info.getInstallDir() + info.getPackageName();
String out_file = info.getTitle() + " " + info.getVersionName()
+ ".apk";
try {
mBuffIn = new BufferedInputStream(new FileInputStream(
source_file));
mBuffOut = new BufferedOutputStream(new FileOutputStream(
BACKUP_LOC + out_file));
while ((read = mBuffIn.read(mData, 0, BUFFER)) != -1)
mBuffOut.write(mData, 0, read);
mBuffOut.flush();
mBuffIn.close();
mBuffOut.close();
msg = new Message();
msg.what = SET_PROGRESS;
msg.obj = info.getTitle() + " wird gesichert";
BackupAppHandler.sendMessage(msg);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BackupAppHandler.sendEmptyMessage(FINISH_PROGRESS);
}
}
private Handler BackupAppHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SET_PROGRESS:
backup_app.setMessage((String) msg.obj);
break;
case FINISH_PROGRESS:
backup_app.dismiss();
AlertDialog.Builder finish = new AlertDialog.Builder(
MainActivity.this);
finish.setTitle(R.string.finish_title);
finish.setMessage(R.string.finish_message);
finish.setCancelable(false);
finish.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
finish.setPositiveButton(R.string.finish_button,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog finish_alert = finish.create();
finish_alert.show();
break;
}
}
};
Code:
private ProgressDialog backup_all;
backup_all = ProgressDialog.show(MainActivity.this,
"Sicherung der Anwendungen", "", true, false);
Thread backup_all = new Thread(new BackupAll(mApps));
backup_all.start();
Code:
private static final String BACKUP_LOC = Environment
.getExternalStorageDirectory() + "/InfoBackup/";
private static final int SET_PROGRESS = 0x00;
private static final int FINISH_PROGRESS = 0x01;
private ProgressDialog backup_all;
private List<App> mApps;
private App info;
private class BackupAll implements Runnable {
private static final int BUFFER = 1024;
private File mDir = new File(BACKUP_LOC);
private byte[] mData;
public BackupAll(List<App> data) {
mApps = data;
mData = new byte[BUFFER];
/* create dir if needed */
File d = new File(BACKUP_LOC);
if (!d.exists()) {
d.mkdir();
// then create this directory
mDir.mkdir();
} else {
if (!mDir.exists())
mDir.mkdir();
}
}
public void run() {
BufferedInputStream mBuffIn;
BufferedOutputStream mBuffOut;
Message msg;
int len = mApps.size();
int read = 0;
for (int i = 0; i < len; i++) {
info = mApps.get(i);
String source_dir = info.getInstallDir();
String out_file = info.getTitle() + " " + info.getVersionName()
+ ".apk";
try {
mBuffIn = new BufferedInputStream(new FileInputStream(
source_dir));
mBuffOut = new BufferedOutputStream(new FileOutputStream(
BACKUP_LOC + out_file));
while ((read = mBuffIn.read(mData, 0, BUFFER)) != -1)
mBuffOut.write(mData, 0, read);
mBuffOut.flush();
mBuffIn.close();
mBuffOut.close();
msg = new Message();
msg.what = SET_PROGRESS;
msg.obj = i + " von " + len + " Anwendungen gesichert";
BackupAllHandler.sendMessage(msg);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
BackupAllHandler.sendEmptyMessage(FINISH_PROGRESS);
}
}