From: Soren Stoutner Date: Wed, 26 Apr 2017 19:00:39 +0000 (-0700) Subject: Display the Orbot version in About → Version if installed. Implements https://redmin... X-Git-Tag: v2.2~6 X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff_plain;h=0fb7991532a1633a4377b27b1704fa525d35aa87 Display the Orbot version in About → Version if installed. Implements https://redmine.stoutner.com/issues/117. --- diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java b/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java index ad0708de..ee36de63 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java @@ -91,6 +91,7 @@ public class AboutTabFragment extends Fragment { TextView versionSecurityPatchTextView = (TextView) tabLayout.findViewById(R.id.about_version_securitypatch); TextView versionWebKitTextView = (TextView) tabLayout.findViewById(R.id.about_version_webkit); TextView versionChromeTextView = (TextView) tabLayout.findViewById(R.id.about_version_chrome); + TextView versionOrbotTextView = (TextView) tabLayout.findViewById(R.id.about_version_orbot); TextView certificateIssuerDNTextView = (TextView) tabLayout.findViewById(R.id.about_version_certificate_issuer_dn); TextView certificateSubjectDNTextView = (TextView) tabLayout.findViewById(R.id.about_version_certificate_subject_dn); TextView certificateStartDateTextView = (TextView) tabLayout.findViewById(R.id.about_version_certificate_start_date); @@ -137,7 +138,16 @@ public class AboutTabFragment extends Fragment { // Select the substring that begins after "Chrome/" and goes until the next " ". String chrome = userAgentString.substring(userAgentString.indexOf("Chrome/") + 7, userAgentString.indexOf(" ", userAgentString.indexOf("Chrome/"))); - // Create a `SpannableStringBuilder` for each `TextView` that needs multiple colors of text. + // Get the Orbot version name if Orbot is installed. + String orbot; + try { + // Store the version name. + orbot = getContext().getPackageManager().getPackageInfo("org.torproject.android", PackageManager.GET_CONFIGURATIONS).versionName; + } catch (PackageManager.NameNotFoundException e) { // Orbot is not installed. + orbot = ""; + } + + // Create a `SpannableStringBuilder` for the hardware and software `TextViews` that needs multiple colors of text. SpannableStringBuilder brandStringBuilder = new SpannableStringBuilder(brandLabel + brand); SpannableStringBuilder manufacturerStringBuilder = new SpannableStringBuilder(manufacturerLabel + manufacturer); SpannableStringBuilder modelStringBuilder = new SpannableStringBuilder(modelLabel + model); @@ -181,7 +191,7 @@ public class AboutTabFragment extends Fragment { SpannableStringBuilder securityPatchStringBuilder = new SpannableStringBuilder(securityPatchLabel + securityPatch); securityPatchStringBuilder.setSpan(blueColorSpan, securityPatchLabel.length(), securityPatchStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); versionSecurityPatchTextView.setText(securityPatchStringBuilder); - } else { // Hide `versionSecurityPatchTextView`. + } else { // SDK_INT < 23, so `versionSecurityPatchTextView` should be hidden. versionSecurityPatchTextView.setVisibility(View.GONE); } @@ -191,10 +201,20 @@ public class AboutTabFragment extends Fragment { SpannableStringBuilder radioStringBuilder = new SpannableStringBuilder(radioLabel + radio); radioStringBuilder.setSpan(blueColorSpan, radioLabel.length(), radioStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); versionRadioTextView.setText(radioStringBuilder); - } else { // Hide `versionRadioTextView`. + } else { // This device does not have a radio, so `versionRadioTextView` should be hidden. versionRadioTextView.setVisibility(View.GONE); } + // Only populate `versionOrbotTextView` if Orbot is installed. + if (!orbot.equals("")) { + String orbotLabel = getString(R.string.orbot) + " "; + SpannableStringBuilder orbotStringBuilder = new SpannableStringBuilder(orbotLabel + orbot); + orbotStringBuilder.setSpan(blueColorSpan, orbotLabel.length(), orbotStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); + versionOrbotTextView.setText(orbotStringBuilder); + } else { // Orbot is not installed, so the `versionOrbotTextView` should be hidden. + versionOrbotTextView.setVisibility(View.GONE); + } + // Display the package signature. try { // Get the first package signature. Suppress the lint warning about the need to be careful in implementing comparison of certificates for security purposes. diff --git a/app/src/main/res/layout/about_tab_version.xml b/app/src/main/res/layout/about_tab_version.xml index b94a7eda..172d74d4 100644 --- a/app/src/main/res/layout/about_tab_version.xml +++ b/app/src/main/res/layout/about_tab_version.xml @@ -40,16 +40,16 @@ which isn't needed in this case because the `ImageView` is only decorative. --> @@ -68,8 +68,8 @@ + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + android:layout_height="wrap_content" + android:layout_width="wrap_content" /> + + + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> + android:layout_width="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8dcdb2f..9264fbf6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -377,6 +377,7 @@ Security Patch: WebKit: Chrome: + Orbot: Package Signature Issuer DN: Subject DN: