finally read APG version dynamicly, so the version name doesn't have to be changed anywhere but the manifest

This commit is contained in:
Thialfihar 2010-06-08 13:46:21 +00:00
parent ce1120b66e
commit 315093c5bc
4 changed files with 39 additions and 7 deletions

View File

@ -40,6 +40,7 @@ import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Vector; import java.util.Vector;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -91,14 +92,18 @@ import org.thialfihar.android.apg.utils.IterableIterator;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageInfo;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast;
public class Apg { public class Apg {
private static final String mApgPackageName = "org.thialfihar.android.apg";
public static class Intent { public static class Intent {
public static final String DECRYPT = "org.thialfihar.android.apg.intent.DECRYPT"; public static final String DECRYPT = "org.thialfihar.android.apg.intent.DECRYPT";
public static final String ENCRYPT = "org.thialfihar.android.apg.intent.ENCRYPT"; public static final String ENCRYPT = "org.thialfihar.android.apg.intent.ENCRYPT";
@ -150,8 +155,8 @@ public class Apg {
public static final Uri CONTENT_URI_PUBLIC_KEY_RING_BY_EMAILS = public static final Uri CONTENT_URI_PUBLIC_KEY_RING_BY_EMAILS =
Uri.parse("content://" + AUTHORITY + "/key_rings/public/emails/"); Uri.parse("content://" + AUTHORITY + "/key_rings/public/emails/");
public static String VERSION = "1.0.1"; private static String VERSION = null;
public static String FULL_VERSION = "APG v" + VERSION; private static String FULL_VERSION = null;
private static final int[] PREFERRED_SYMMETRIC_ALGORITHMS = private static final int[] PREFERRED_SYMMETRIC_ALGORITHMS =
new int[] { new int[] {
@ -1831,4 +1836,30 @@ public class Apg {
return nlBytes; return nlBytes;
} }
public static String getVersion(Context context) {
if (VERSION != null) {
return VERSION;
}
List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); ++i) {
PackageInfo p = packs.get(i);
if (!p.packageName.equals(mApgPackageName)) {
continue;
}
VERSION = p.versionName;
return VERSION;
}
// unpossible!
return "0.0.0";
}
public static String getFullVersion(Context context) {
if (FULL_VERSION == null) {
FULL_VERSION = "APG v" + getVersion(context);
}
return FULL_VERSION;
}
} }

View File

@ -157,7 +157,7 @@ public class BaseActivity extends Activity
case Id.dialog.about: { case Id.dialog.about: {
AlertDialog.Builder alert = new AlertDialog.Builder(this); AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("About " + Apg.FULL_VERSION); alert.setTitle("About " + Apg.getFullVersion(this));
LayoutInflater inflater = LayoutInflater inflater =
(LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@ -448,12 +448,13 @@ public class BaseActivity extends Activity
} }
public boolean hasSeenChangeLog() { public boolean hasSeenChangeLog() {
return mPreferences.getBoolean(Constants.pref.has_seen_change_log, false); return mPreferences.getBoolean(Constants.pref.has_seen_change_log + Apg.getVersion(this),
false);
} }
public void setHasSeenChangeLog(boolean value) { public void setHasSeenChangeLog(boolean value) {
SharedPreferences.Editor editor = mPreferences.edit(); SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(Constants.pref.has_seen_change_log, value); editor.putBoolean(Constants.pref.has_seen_change_log + Apg.getVersion(this), value);
editor.commit(); editor.commit();
} }

View File

@ -24,7 +24,7 @@ public final class Constants {
} }
public static final class pref { public static final class pref {
public static final String has_seen_change_log = "seenChangeLogDialog" + Apg.VERSION; public static final String has_seen_change_log = "seenChangeLogDialog";
public static final String default_encryption_algorithm = "defaultEncryptionAlgorithm"; public static final String default_encryption_algorithm = "defaultEncryptionAlgorithm";
public static final String default_hash_algorithm = "defaultHashAlgorithm"; public static final String default_hash_algorithm = "defaultHashAlgorithm";
public static final String default_ascii_armour = "defaultAsciiArmour"; public static final String default_ascii_armour = "defaultAsciiArmour";

View File

@ -183,7 +183,7 @@ public class MainActivity extends BaseActivity {
case Id.dialog.change_log: { case Id.dialog.change_log: {
AlertDialog.Builder alert = new AlertDialog.Builder(this); AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Changes " + Apg.FULL_VERSION); alert.setTitle("Changes " + Apg.getFullVersion(this));
LayoutInflater inflater = LayoutInflater inflater =
(LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.info, null); View layout = inflater.inflate(R.layout.info, null);