/*
- * Copyright 2016-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2023 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
*
import com.google.android.material.snackbar.Snackbar
-import com.stoutner.privacybrowser.R
import com.stoutner.privacybrowser.BuildConfig
-import com.stoutner.privacybrowser.asynctasks.SaveAboutVersionImage
+import com.stoutner.privacybrowser.R
+import com.stoutner.privacybrowser.coroutines.SaveAboutVersionImageCoroutine
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
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()
}
}
- // 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()
}
}
}
// Define the save about version image activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
private val saveAboutVersionImageActivityResultLauncher = registerForActivityResult(ActivityResultContracts.CreateDocument("image/png")) { 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) {
- // Save the about version image.
- SaveAboutVersionImage(requireActivity(), fileUri, aboutVersionLayout.findViewById(R.id.about_version_linearlayout)).execute()
- }
+ // Save the file if the URI is not null, which happens if the user exits the file picker by pressing back.
+ if (fileUri != null)
+ SaveAboutVersionImageCoroutine.saveImage(requireActivity(), fileUri, aboutVersionLayout.findViewById(R.id.about_version_linearlayout))
}
override fun onCreate(savedInstanceState: Bundle?) {
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) + " "
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")
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.
""
updateMemoryUsageBoolean = true
}
- fun updateMemoryUsage(activity: Activity) {
+ private fun updateMemoryUsage(activity: Activity) {
try {
// Update the memory usage if enabled.
if (updateMemoryUsageBoolean) {
}
}
- fun getAboutVersionString(): String {
+ private fun getAboutVersionString(): String {
// Initialize an about version string builder.
val aboutVersionStringBuilder = StringBuilder()