aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-05-31 21:29:45 +0200
committerChristian Schneppe <christian@pix-art.de>2016-05-31 21:29:45 +0200
commit9e724edb42d8cb0fa8745f88a80d914df09f4ff6 (patch)
tree541d210853ea79be92d280833d4f8fbb199e2dad /src/main/java
parentf09d35e55ad3519436521558f6795559b2a385a3 (diff)
complete backup importer
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java9
-rw-r--r--src/main/java/eu/siacs/conversations/ui/WelcomeActivity.java91
2 files changed, 65 insertions, 35 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index b8927019f..398ca0a1d 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -346,7 +346,7 @@ public class ConversationActivity extends XmppActivity
}
}
- public boolean isPackageInstalled(String targetPackage){
+ private boolean isPackageInstalled(String targetPackage){
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
@@ -1280,9 +1280,6 @@ public class ConversationActivity extends XmppActivity
if (!isConversationsOverviewVisable() || !isConversationsOverviewHideable()) {
sendReadMarkerIfNecessary(getSelectedConversation());
}
-
- AppUpdate();
-
}
@Override
@@ -1369,6 +1366,10 @@ public class ConversationActivity extends XmppActivity
this.mConversationFragment.setupIme();
}
+ if (xmppConnectionService.getAccounts().size() != 0) {
+ AppUpdate();
+ }
+
if (this.mPostponedActivityResult != null) {
this.onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second);
}
diff --git a/src/main/java/eu/siacs/conversations/ui/WelcomeActivity.java b/src/main/java/eu/siacs/conversations/ui/WelcomeActivity.java
index 55bb7140f..3e35bd48c 100644
--- a/src/main/java/eu/siacs/conversations/ui/WelcomeActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/WelcomeActivity.java
@@ -4,10 +4,14 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
+import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
@@ -18,43 +22,26 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.List;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.persistance.DatabaseBackend;
public class WelcomeActivity extends Activity {
+ boolean dbExist = checkDatabase();
+ boolean backup_existing = false;
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
- boolean dbExist = checkDatabase();
- boolean backup_existing = false;
+
//check if there is a backed up database --
if (dbExist) {
- //copy db from public storage to private storage
backup_existing = true;
- } else {
- //if copy fails, show dialog
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(R.string.import_failed)
- .setCancelable(false)
- .setPositiveButton(R.string.create_account, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- Intent intent = new Intent(WelcomeActivity.this, MagicCreateActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- startActivity(intent);
- }
- })
- .setNegativeButton(R.string.use_existing_accout, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- startActivity(new Intent(WelcomeActivity.this, EditAccountActivity.class));
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
- //throw new Error("Error copying database");
}
final Button ImportDatabase = (Button) findViewById(R.id.import_database);
@@ -68,19 +55,11 @@ public class WelcomeActivity extends Activity {
ImportDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- //ToDo add import DB from local storage to system storage and wait until copy is complete
try {
ImportDatabase();
} catch (IOException e) {
e.printStackTrace();
}
- //ask user to uninstall old eu.siacs.conversations before restart
-
- //restart app
- Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
}
});
@@ -112,6 +91,7 @@ public class WelcomeActivity extends Activity {
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
+ Log.d(Config.LOGTAG,"Backup found");
} catch (SQLiteException e) {
//database does't exist yet.
}
@@ -139,12 +119,61 @@ public class WelcomeActivity extends Activity {
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
+ Log.d(Config.LOGTAG,"Starting import of backup");
// Close and clear the streams
myOutput.flush();
myOutput.close();
myInput.close();
+
+ Log.d(Config.LOGTAG, "New Features - Uninstall old version of Pix-Art Messenger");
+ if (isPackageInstalled("eu.siacs.conversations")) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setMessage(R.string.uninstall_app_text)
+ .setPositiveButton(R.string.uninstall, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialogInterface, int i) {
+ //start the deinstallation of old version
+ if (isPackageInstalled("eu.siacs.conversations")) {
+ Uri packageURI_VR = Uri.parse("package:eu.siacs.conversations");
+ Intent uninstallIntent_VR = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI_VR);
+ if (uninstallIntent_VR.resolveActivity(getPackageManager()) != null) {
+ startActivity(uninstallIntent_VR);
+ }
+ }
+ }
+ })
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialogInterface, int i) {
+ Log.d(Config.LOGTAG, "New Features - Uninstall cancled");
+ restart();
+ }
+ });
+ builder.create().show();
+ } else {
+ restart();
+ }
+
+ }
+
+ private void restart() {
+ //restart app
+ Log.d(Config.LOGTAG, "Restarting " + getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()));
+ Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ System.exit(0);
}
+ private boolean isPackageInstalled(String targetPackage) {
+ List<ApplicationInfo> packages;
+ PackageManager pm;
+ pm = getPackageManager();
+ packages = pm.getInstalledApplications(0);
+ for (ApplicationInfo packageInfo : packages) {
+ if (packageInfo.packageName.equals(targetPackage)) return true;
+ }
+ return false;
+ }
}