Skip to content

Commit

Permalink
streamline build information
Browse files Browse the repository at this point in the history
  • Loading branch information
ostrya committed Oct 25, 2020
1 parent 6ff055d commit 7fd4790
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import org.ostrya.presencepublisher.R;
import org.ostrya.presencepublisher.ui.preference.about.AppIdPreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.BuildTypePreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.BundledLicensesPreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.PrivacyPreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.SourceRepositoryPreference;
import org.ostrya.presencepublisher.ui.preference.about.VersionCodePreference;
import org.ostrya.presencepublisher.ui.preference.about.VersionNamePreference;
import org.ostrya.presencepublisher.ui.preference.about.SignaturePreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.SourceRepositoryPreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.about.VersionInfoPreferenceDummy;
import org.ostrya.presencepublisher.ui.preference.common.MyPreferenceCategory;

public class AboutFragment extends PreferenceFragmentCompat {
Expand All @@ -28,14 +26,12 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
screen.addPreference(legalCategory);
screen.addPreference(appCategory);

legalCategory.addPreference(new SourceRepositoryPreference(context, this));
legalCategory.addPreference(new SourceRepositoryPreferenceDummy(context, this));
legalCategory.addPreference(new BundledLicensesPreferenceDummy(context, this));
legalCategory.addPreference(new PrivacyPreferenceDummy(context, this));

appCategory.addPreference(new AppIdPreferenceDummy(context));
appCategory.addPreference(new VersionNamePreference(context));
appCategory.addPreference(new VersionCodePreference(context));
appCategory.addPreference(new BuildTypePreferenceDummy(context));
appCategory.addPreference(new VersionInfoPreferenceDummy(context));
appCategory.addPreference(new SignaturePreferenceDummy(context));

setPreferenceScreen(screen);
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package org.ostrya.presencepublisher.ui.preference.about;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Build;
import com.hypertrack.hyperlog.HyperLog;
import org.ostrya.presencepublisher.R;
import org.ostrya.presencepublisher.ui.preference.common.StringDummy;

import java.io.ByteArrayInputStream;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

public class SignaturePreferenceDummy extends StringDummy {
private static final String TAG = "SignaturePreferenceDummy";

public SignaturePreferenceDummy(Context context) {
super(context, R.string.signature_title, getSignatures(context));
}

private static String getSignatures(Context context) {
try {
Signature[] signatures;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNING_CERTIFICATES);
if (info.signingInfo == null) {
signatures = null;
} else if (info.signingInfo.hasMultipleSigners()) {
signatures = info.signingInfo.getApkContentsSigners();
} else {
signatures = info.signingInfo.getSigningCertificateHistory();
}
} else {
signatures = getLegacySignatures(context);
}
if (signatures == null) {
HyperLog.i(TAG, "No signing info found");
return context.getString(R.string.value_undefined);
}
boolean moreThanOne = false;
StringBuilder sb = new StringBuilder();
for (Signature s : signatures) {
if (moreThanOne) {
sb.append("\n");
} else {
moreThanOne = true;
}
sb.append(signatureToString(s, context.getString(R.string.value_undefined)));
}
return sb.toString();
} catch (PackageManager.NameNotFoundException e) {
HyperLog.w(TAG, "Unable to find this package", e);
return context.getString(R.string.value_undefined);
}
}

@SuppressWarnings("deprecation")
@SuppressLint("PackageManagerGetSignatures")
private static Signature[] getLegacySignatures(Context context) throws PackageManager.NameNotFoundException {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
return info.signatures;
}

private static String signatureToString(Signature signature, String defaultValue) {
try {
X509Certificate cert = (X509Certificate) CertificateFactory.getInstance("X.509")
.generateCertificate(new ByteArrayInputStream(signature.toByteArray()));
return cert.toString();
} catch (CertificateException e) {
HyperLog.w(TAG, "Unable to instantiate X.509 certificate factory", e);
return defaultValue;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
import org.ostrya.presencepublisher.R;
import org.ostrya.presencepublisher.ui.preference.common.ClickDummy;

public class SourceRepositoryPreference extends ClickDummy {
public class SourceRepositoryPreferenceDummy extends ClickDummy {

public SourceRepositoryPreference(Context context, Fragment fragment) {
public SourceRepositoryPreferenceDummy(Context context, Fragment fragment) {
super(context, android.R.drawable.ic_menu_view, R.string.source_repo_title, R.string.source_repo_summary, fragment);
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.ostrya.presencepublisher.ui.preference.about;

import android.content.Context;
import org.ostrya.presencepublisher.BuildConfig;
import org.ostrya.presencepublisher.R;
import org.ostrya.presencepublisher.ui.preference.common.StringDummy;

public class VersionInfoPreferenceDummy extends StringDummy {
public VersionInfoPreferenceDummy(Context context) {
super(context, R.string.version_title, context.getString(R.string.version_summary, BuildConfig.APPLICATION_ID, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE, BuildConfig.BUILD_TYPE));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.ostrya.presencepublisher.ui.preference.common;

import android.content.Context;
import android.widget.TextView;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;

public class StringDummy extends Preference {
public StringDummy(Context context, int summaryId) {
Expand All @@ -10,6 +12,15 @@ public StringDummy(Context context, int summaryId) {
setIconSpaceReserved(false);
}

@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
if (summaryView != null) {
summaryView.setMaxLines(Integer.MAX_VALUE);
}
}

public StringDummy(Context context, int titleId, int summaryId) {
super(context);
setTitle(titleId);
Expand Down
5 changes: 1 addition & 4 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,7 @@
<string name="privacy_summary">Tippe hier, um die Datenschutzerklärung dieser App im Browser zu öffnen.</string>
<string name="signature_title">Appsignatur</string>
<string name="source_repo_title">Quellcode</string>
<string name="version_code_title">Versionscode</string>
<string name="version_name_title">Versionsname</string>
<string name="build_type_title">Buildtyp</string>
<string name="app_id_title">App-ID</string>
<string name="version_title">Version</string>
<string name="category_build">Build-Information</string>
<string name="category_legal">Rechtliches</string>
<string name="dialog_close">Schließen</string>
Expand Down
6 changes: 2 additions & 4 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,11 @@
<string name="signature_title">App signature</string>
<string name="source_repo_title">Source code</string>
<string name="source_repo_summary">Click here to open the source code in a browser.</string>
<string name="version_code_title">Version code</string>
<string name="version_name_title">Version name</string>
<string name="build_type_title">Build type</string>
<string name="app_id_title">App ID</string>
<string name="version_title">Version</string>
<string name="category_build">Build information</string>
<string name="category_legal">Legal</string>
<string name="dialog_close">Close</string>
<string name="privacy_url">https://github.com/ostrya/PresencePublisher/blob/master/legal/en/PRIVACY_POLICY.md</string>
<string name="source_repo_url" translatable="false">https://github.com/ostrya/PresencePublisher/</string>
<string name="version_summary" translatable="false">%1$s%n%2$s (%3$d) - %4$s</string>
</resources>

0 comments on commit 7fd4790

Please sign in to comment.