X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Ffragments%2FAboutVersionFragment.kt;h=6e5c066869b5390d2e401a1c26b1fa7e55e101b0;hb=44a7a1d29d8e4722e2ea522075878a13b89bcb52;hp=0078fcc1fab5039c533b07a05064234b4da77b3b;hpb=83fa40449d1160836c4066c99fe3c141d982917a;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutVersionFragment.kt b/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutVersionFragment.kt index 0078fcc1..6e5c0668 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutVersionFragment.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/AboutVersionFragment.kt @@ -51,8 +51,8 @@ import androidx.webkit.WebViewCompat import com.google.android.material.snackbar.Snackbar -import com.stoutner.privacybrowser.R import com.stoutner.privacybrowser.BuildConfig +import com.stoutner.privacybrowser.R import com.stoutner.privacybrowser.asynctasks.SaveAboutVersionImage import kotlinx.coroutines.CoroutineScope @@ -163,6 +163,24 @@ class AboutVersionFragment : Fragment() { private val saveAboutVersionTextActivityResultLauncher = registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { fileUri: Uri? -> // Only save the file if the URI is not null, which happens if the user exited the file picker by pressing back. if (fileUri != null) { + // Initialize the file name string from the file URI last path segment. + var fileNameString = fileUri.lastPathSegment + + // Query the exact file name if the API >= 26. + if (Build.VERSION.SDK_INT >= 26) { + // Get a cursor from the content resolver. + val contentResolverCursor = requireActivity().contentResolver.query(fileUri, null, null, null)!! + + // Move to the first row. + contentResolverCursor.moveToFirst() + + // Get the file name from the cursor. + fileNameString = contentResolverCursor.getString(contentResolverCursor.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME)) + + // Close the cursor. + contentResolverCursor.close() + } + try { // Get the about version string. val aboutVersionString = getAboutVersionString() @@ -181,29 +199,11 @@ class AboutVersionFragment : Fragment() { } } - // Initialize the file name string from the file URI last path segment. - var fileNameString = fileUri.lastPathSegment - - // Query the exact file name if the API >= 26. - if (Build.VERSION.SDK_INT >= 26) { - // Get a cursor from the content resolver. - val contentResolverCursor = requireActivity().contentResolver.query(fileUri, null, null, null)!! - - // Move to the first row. - contentResolverCursor.moveToFirst() - - // Get the file name from the cursor. - fileNameString = contentResolverCursor.getString(contentResolverCursor.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME)) - - // Close the cursor. - contentResolverCursor.close() - } - // Display a snackbar with the saved logcat information. Snackbar.make(aboutVersionLayout, getString(R.string.saved, fileNameString), Snackbar.LENGTH_SHORT).show() } catch (exception: Exception) { // Display a snackbar with the error message. - Snackbar.make(aboutVersionLayout, getString(R.string.error_saving_file) + " " + exception.toString(), Snackbar.LENGTH_INDEFINITE).show() + Snackbar.make(aboutVersionLayout, getString(R.string.error_saving_file, fileNameString, exception.toString()), Snackbar.LENGTH_INDEFINITE).show() } } } @@ -277,7 +277,7 @@ class AboutVersionFragment : Fragment() { certificateSignatureAlgorithmTextView = aboutVersionLayout.findViewById(R.id.certificate_signature_algorithm) // Setup the labels. - val version = getString(R.string.version) + " " + BuildConfig.VERSION_NAME + " (" + getString(R.string.version_code) + " " + BuildConfig.VERSION_CODE + ")" + val version = getString(R.string.version_code, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE) val brandLabel = getString(R.string.brand) + " " val manufacturerLabel = getString(R.string.manufacturer) + " " val modelLabel = getString(R.string.model) + " " @@ -321,7 +321,7 @@ class AboutVersionFragment : Fragment() { val device = Build.DEVICE val bootloader = Build.BOOTLOADER val radio = Build.getRadioVersion() - val android = Build.VERSION.RELEASE + " (" + getString(R.string.api) + " " + Build.VERSION.SDK_INT + ")" + val android = getString(R.string.api, Build.VERSION.RELEASE, Build.VERSION.SDK_INT) val build = Build.DISPLAY val kernel = System.getProperty("os.version") @@ -342,12 +342,12 @@ class AboutVersionFragment : Fragment() { val i2p: String = try { // Check to see if the F-Droid flavor is installed. The newer `getPackageInfo()` may be used once the minimum API >= 33. @Suppress("DEPRECATION") - requireContext().packageManager.getPackageInfo("net.i2p.android.router", 0).versionName + " " + requireContext().getString(R.string.fdroid_flavor) + requireContext().getString(R.string.fdroid_flavor, requireContext().packageManager.getPackageInfo("net.i2p.android.router", 0).versionName) } catch (exception: PackageManager.NameNotFoundException) { // The F-Droid flavor is not installed. try { // Check to see if the F-Droid flavor is installed. The newer `getPackageInfo()` may be used once the minimum API >= 33. @Suppress("DEPRECATION") - requireContext().packageManager.getPackageInfo("net.i2p.android", 0).versionName + " " + requireContext().getString(R.string.google_play_flavor) + requireContext().getString(R.string.google_play_flavor, requireContext().packageManager.getPackageInfo("net.i2p.android", 0).versionName) } catch (exception: PackageManager.NameNotFoundException) { // The Google Play flavor is not installed either. // Store an empty string. ""