Merge remote-tracking branch 'refs/remotes/origin/new_version'

This commit is contained in:
Christian Schneppe 2016-05-31 21:40:45 +02:00
commit 5f8de512f5
9 changed files with 222 additions and 7 deletions

View file

@ -72,9 +72,9 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 147
versionCode 150
versionName "1.13.0"
versionName "1.13.1"
archivesBaseName += "-$versionName"
applicationId "de.pixart.messenger"

View file

@ -51,7 +51,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
private static DatabaseBackend instance = null;
private static final String DATABASE_NAME = "history";
public static final String DATABASE_NAME = "history";
private static final int DATABASE_VERSION = 27;
private static String CREATE_CONTATCS_STATEMENT = "create table "

View file

@ -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);
}

View file

@ -27,9 +27,15 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.persistance.DatabaseBackend;
import eu.siacs.conversations.services.UpdaterWebService;
public class UpdaterActivity extends Activity {
@ -94,6 +100,36 @@ public class UpdaterActivity extends Activity {
}
}
private void ExportDatabase() throws IOException {
// Get hold of the db:
InputStream myInput = new FileInputStream(this.getDatabasePath(DatabaseBackend.DATABASE_NAME));
// Set the output folder on the SDcard
File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pix-Art Messenger/.Database/");
// Create the folder if it doesn't exist:
if (!directory.exists()) {
directory.mkdirs();
}
// Set the output file stream up:
OutputStream myOutput = new FileOutputStream(directory.getPath() + "/Database.bak");
// Transfer bytes from the input file to the output file
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
// Close and clear the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
@Override
public void onDestroy() {
//unregister your receivers
@ -201,6 +237,13 @@ public class UpdaterActivity extends Activity {
reponseObj = new JSONObject(responseMessage);
boolean success = reponseObj.getBoolean("success");
if (success) {
//start backing up database
try {
ExportDatabase();
Log.d(Config.LOGTAG,"AppUpdater: Database successfully exported");
} catch (IOException e) {
e.printStackTrace();
}
//Overall information about the contents of a package
//This corresponds to all of the information collected from AndroidManifest.xml.
PackageInfo pInfo = null;

View file

@ -1,19 +1,68 @@
package eu.siacs.conversations.ui;
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;
import java.io.File;
import java.io.FileInputStream;
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);
//check if there is a backed up database --
if (dbExist) {
backup_existing = true;
}
final Button ImportDatabase = (Button) findViewById(R.id.import_database);
final TextView ImportText = (TextView) findViewById(R.id.import_text);
if (backup_existing) {
ImportDatabase.setVisibility(View.VISIBLE);
ImportText.setVisibility(View.VISIBLE);
}
ImportDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
ImportDatabase();
} catch (IOException e) {
e.printStackTrace();
}
}
});
final Button createAccount = (Button) findViewById(R.id.create_account);
createAccount.setOnClickListener(new View.OnClickListener() {
@Override
@ -33,4 +82,98 @@ public class WelcomeActivity extends Activity {
}
private boolean checkDatabase() {
SQLiteDatabase checkDB = null;
String DB_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pix-Art Messenger/.Database/";
String DB_NAME = "Database.bak";
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.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void ImportDatabase() throws IOException {
// Set location for the db:
OutputStream myOutput = new FileOutputStream(this.getDatabasePath(DatabaseBackend.DATABASE_NAME));
// Set the folder on the SDcard
File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pix-Art Messenger/.Database/");
// Set the input file stream up:
InputStream myInput = new FileInputStream(directory.getPath() + "/Database.bak");
// Transfer bytes from the input file to the output file
byte[] buffer = new byte[1024];
int length;
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;
}
}

View file

@ -43,6 +43,26 @@
android:textColor="@color/black87"
android:textSize="?attr/TextSizeBody" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/import_text"
android:textColor="@color/black87"
android:textSize="?attr/TextSizeBody"
android:visibility="gone"
android:id="@id/import_text" />
<Button
android:id="@+id/import_database"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="@string/import_database"
android:textColor="@color/accent"
android:visibility="gone" />
<Button
android:id="@+id/create_account"
style="?android:attr/borderlessButtonStyle"

View file

@ -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>

View file

@ -3,4 +3,5 @@
<item name="snackbar_location_message" type="id" />
<item name="message_image_view" type="id" />
<item name="message_video_view" type="id" />
<item name="import_text" type="id" />
</resources>

View file

@ -642,5 +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 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>