/*
- * Copyright © 2016-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2022 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
*
import com.stoutner.privacybrowser.BuildConfig
import com.stoutner.privacybrowser.asynctasks.SaveAboutVersionImage
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
import java.io.ByteArrayInputStream
import java.io.InputStream
import java.lang.Exception
// Open an output stream.
val outputStream = requireActivity().contentResolver.openOutputStream(fileUri)!!
- // Write the about version string to the output stream.
- outputStream.write(aboutVersionString.toByteArray(StandardCharsets.UTF_8))
+ // Save about version using a coroutine with Dispatchers.IO.
+ CoroutineScope(Dispatchers.Main).launch {
+ withContext(Dispatchers.IO) {
+ // Write the about version string to the output stream.
+ outputStream.write(aboutVersionString.toByteArray(StandardCharsets.UTF_8))
- // Close the output stream.
- outputStream.close()
+ // Close the output stream.
+ outputStream.close()
+ }
+ }
// Initialize the file name string from the file URI last path segment.
var fileNameString = fileUri.lastPathSegment
systemTotalMemoryLabel = getString(R.string.system_total_memory) + " "
val easyListLabel = getString(R.string.easylist_label) + " "
val easyPrivacyLabel = getString(R.string.easyprivacy_label) + " "
- val fanboyAnnoyanceLabel = getString(R.string.fanboy_annoyance_label) + " "
- val fanboySocialLabel = getString(R.string.fanboy_social_label) + " "
+ val fanboyAnnoyanceLabel = getString(R.string.fanboys_annoyance_label) + " "
+ val fanboySocialLabel = getString(R.string.fanboys_social_label) + " "
val ultraListLabel = getString(R.string.ultralist_label) + " "
val ultraPrivacyLabel = getString(R.string.ultraprivacy_label) + " "
val issuerDNLabel = getString(R.string.issuer_dn) + " "
// Get the I2P version name if I2P is installed.
val i2p: String = try {
- // Store the version name. The newer `getPackageInfo()` may be used once the minimum API >= 33.
+ // 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
- } catch (exception: PackageManager.NameNotFoundException) { // I2P is not installed.
- // Store an empty string.
- ""
+ requireContext().packageManager.getPackageInfo("net.i2p.android.router", 0).versionName + " " + requireContext().getString(R.string.fdroid_flavor)
+ } 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)
+ } catch (exception: PackageManager.NameNotFoundException) { // The Google Play flavor is not installed either.
+ // Store an empty string.
+ ""
+ }
}
// Get the OpenKeychain version name if it is installed.
// Return the string.
return aboutVersionStringBuilder.toString()
}
-}
\ No newline at end of file
+}