aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
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
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
-rw-r--r--src/main/res/values-de/strings.xml3
-rw-r--r--src/main/res/values/strings.xml7
4 files changed, 72 insertions, 38 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;
+ }
}
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index f5226722e..e9e8d95b2 100644
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -610,5 +610,8 @@
<string name="registration_please_wait">Registrierung fehlgeschlagen: Bitte später versuchen</string>
<string name="send_message_to_x">Nachricht an %s senden</string>
<string name="joining_conference">Konferenz beitreten…</string>
+ <string name="import_database">Backup importieren</string>
+ <string name="import_text">Es wurde ein Backup gefunden, welches importiert werden kann.\nMöglicherweise wirst du gefragt, ob du eine ältere Version oder Conversations deinstallieren möchtest und dein Messenger startet während des Importvorgangs neu. Soll das Backup importiert werden?</string>
+ <string name="uninstall_app_text">Es ist eine alte Version von Pix-Art Messenger oder Conversations installiert. Falls du einen alten Pix-Art Messenger installiert hast, solltest du diesen deinstallieren. Nach der Deinstallation, solltest du erneut auf \'Backup importieren\' klicken, damit deine Daten in die neue Version importiert werden.</string>
</resources>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index b71122003..aec0e3a43 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -642,8 +642,9 @@
<string name="conference_subject">Subject</string>
<string name="choose_participants">Choose participants</string>
<string name="creating_conference">Creating conference…</string>
- <string name="import_text">There is a backup on your device. Shall the backup be imported?</string>
- <string name="import_database">import backup</string>
- <string name="import_failed">The import has failed</string>
+ <string name="import_text">There is a backup on your device which can be imported.\nPossibly you will be asked to uninstall the old version or Conversations and your Messenger will be restarted during backup process. Shall the backup be imported? </string>
+ <string name="import_database">Import backup</string>
+ <string name="uninstall_app_text">There is an old version of Pix-Art Messenger or Conversations installed. If you have an old Pix-Art Messenger installed, you should uninstall this version. After uninstalled the old versoin, you should choose \'import backup\' again and we will import your data to the new version.</string>
+ <string name="you">You</string>
</resources>