]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/commitdiff
Stop displaying the Waiting for Orbot dialog. https://redmine.stoutner.com/issues/814
authorSoren Stoutner <soren@stoutner.com>
Thu, 7 May 2026 18:00:26 +0000 (11:00 -0700)
committerSoren Stoutner <soren@stoutner.com>
Thu, 7 May 2026 18:00:26 +0000 (11:00 -0700)
16 files changed:
app/build.gradle
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt
app/src/main/java/com/stoutner/privacybrowser/dialogs/WaitingForProxyDialog.kt [deleted file]
app/src/main/java/com/stoutner/privacybrowser/helpers/ProxyHelper.kt
app/src/main/java/com/stoutner/privacybrowser/views/NestedScrollWebView.kt
app/src/main/res/layout/waiting_for_proxy_dialog.xml [deleted file]
app/src/main/res/values-de/strings.xml
app/src/main/res/values-es/strings.xml
app/src/main/res/values-fr/strings.xml
app/src/main/res/values-it/strings.xml
app/src/main/res/values-pt-rBR/strings.xml
app/src/main/res/values-ru/strings.xml
app/src/main/res/values-tr/strings.xml
app/src/main/res/values-zh-rCN/strings.xml
app/src/main/res/values/strings.xml
build.gradle

index 6c2d0240d1f09955c1d821b809067742645d1c9a..1edc15e97d467fb7723608c1220af9c6bf152928 100644 (file)
@@ -85,7 +85,7 @@ dependencies {
     implementation 'androidx.preference:preference-ktx:1.2.1'
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0'
     implementation 'androidx.viewpager:viewpager:1.1.0'
-    implementation 'androidx.webkit:webkit:1.15.0'
+    implementation 'androidx.webkit:webkit:1.16.0'
 
     // Include the Kotlin standard library.  This should be the same version number listed in project build.gradle.
     implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.2.10'
index 003010b4b44433026fb96ea696a28a0dd4d79e13..c70b2c15e6899f17bd527432c36269f384eb4649 100644 (file)
@@ -26,12 +26,10 @@ import android.annotation.SuppressLint
 import android.app.DownloadManager
 import android.app.SearchManager
 import android.content.ActivityNotFoundException
-import android.content.BroadcastReceiver
 import android.content.ClipData
 import android.content.ClipboardManager
 import android.content.Context
 import android.content.Intent
-import android.content.IntentFilter
 import android.content.SharedPreferences
 import android.content.pm.PackageManager
 import android.content.res.Configuration
@@ -99,7 +97,6 @@ import androidx.appcompat.app.AppCompatDelegate
 import androidx.appcompat.content.res.AppCompatResources
 import androidx.appcompat.widget.Toolbar
 import androidx.coordinatorlayout.widget.CoordinatorLayout
-import androidx.core.content.ContextCompat
 import androidx.core.graphics.scale
 import androidx.core.net.toUri
 import androidx.core.view.GravityCompat
@@ -143,7 +140,6 @@ import com.stoutner.privacybrowser.dialogs.SaveDialog
 import com.stoutner.privacybrowser.dialogs.SslCertificateErrorDialog
 import com.stoutner.privacybrowser.dialogs.UrlHistoryDialog
 import com.stoutner.privacybrowser.dialogs.ViewSslCertificateDialog
-import com.stoutner.privacybrowser.dialogs.WaitingForProxyDialog
 import com.stoutner.privacybrowser.fragments.WebViewTabFragment
 import com.stoutner.privacybrowser.helpers.BLOCK_ALL_THIRD_PARTY_REQUESTS
 import com.stoutner.privacybrowser.helpers.BOOKMARK_NAME
@@ -243,7 +239,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
         // Define the public static variables.
         var currentBookmarksFolderId = 0L
         val executorService = Executors.newFixedThreadPool(4)!!
-        var orbotStatus = "unknown"
         val pendingDialogsArrayList = ArrayList<PendingDialogDataClass>()
         var proxyMode = ProxyHelper.NONE
         var restartFromBookmarksActivity = false
@@ -381,7 +376,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
     private var navigationDrawerFirstView = true
     private var objectAnimator = ObjectAnimator()
     private var optionsMenu: Menu? = null
-    private var orbotStatusBroadcastReceiver: BroadcastReceiver? = null
     private var reapplyAppSettingsOnRestart = false
     private var reapplyDomainSettingsOnRestart = false
     private var sanitizeAmpRedirects = false
@@ -392,7 +386,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
     private var savedTabPosition = 0
     private var scrollAppBar = false
     private var sortBookmarksAlphabetically = false
-    private var waitingForProxy = false
 
     // Define the browse file upload activity result launcher.  It must be defined before `onCreate()` is run or the app will crash.
     private val browseFileUploadActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult ->
@@ -887,7 +880,7 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
         if (currentWebView != null)
             currentWebView!!.resumeTimers()
 
-        // Reapply the proxy settings if the system is using a proxy.  This redisplays the appropriate alert dialog.
+        // Reapply the proxy settings if the system is using a proxy.
         if (proxyMode != ProxyHelper.NONE)
             applyProxy(false)
 
@@ -997,11 +990,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
     }
 
     public override fun onDestroy() {
-        // Unregister the orbot status broadcast receiver if it exists.
-        if (orbotStatusBroadcastReceiver != null) {
-            unregisterReceiver(orbotStatusBroadcastReceiver)
-        }
-
         // Close the bookmarks cursor if it exists.
         bookmarksCursor?.close()
 
@@ -3584,9 +3572,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
         // Set the proxy according to the mode.
         proxyHelper.setProxy(applicationContext, appBarLayout, proxyMode)
 
-        // Reset the waiting for proxy tracker.
-        waitingForProxy = false
-
         // Set the proxy.
         when (proxyMode) {
             ProxyHelper.NONE -> {
@@ -3619,32 +3604,8 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
 
                 // Check to see if Orbot is installed.
                 try {
-                    // Get the package manager.
-                    val packageManager = packageManager
-
                     // Check to see if Orbot is in the list.  This will throw an error and drop to the catch section if it isn't installed.
                     packageManager.getPackageInfo("org.torproject.android", 0)
-
-                    // Check to see if the proxy is ready.
-                    if (orbotStatus != ProxyHelper.ORBOT_STATUS_ON) {  // Orbot is not ready.
-                        // Set the waiting for proxy status.
-                        waitingForProxy = true
-
-                        // Show the waiting for proxy dialog if it isn't already displayed.
-                        if (supportFragmentManager.findFragmentByTag(getString(R.string.waiting_for_proxy_dialog)) == null) {
-                            // Get a handle for the waiting for proxy alert dialog.
-                            val waitingForProxyDialogFragment = WaitingForProxyDialog()
-
-                            // Try to show the dialog.  Sometimes the window is not yet active if returning from Settings.
-                            try {
-                                // Show the waiting for proxy alert dialog.
-                                waitingForProxyDialogFragment.show(supportFragmentManager, getString(R.string.waiting_for_proxy_dialog))
-                            } catch (_: Exception) {
-                                // Add the dialog to the pending dialog array list.  It will be displayed in `onStart()`.
-                                pendingDialogsArrayList.add(PendingDialogDataClass(waitingForProxyDialogFragment, getString(R.string.waiting_for_proxy_dialog)))
-                            }
-                        }
-                    }
                 } catch (_: PackageManager.NameNotFoundException) {  // Orbot is not installed.
                     // Show the Orbot not installed dialog if it is not already displayed.
                     if (supportFragmentManager.findFragmentByTag(getString(R.string.proxy_not_installed_dialog)) == null) {
@@ -3683,7 +3644,7 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
                     } catch (_: PackageManager.NameNotFoundException) {  // The Google Play flavor is not installed.
                         // Sow the I2P not installed dialog if it is not already displayed.
                         if (supportFragmentManager.findFragmentByTag(getString(R.string.proxy_not_installed_dialog)) == null) {
-                            // Get a handle for the waiting for proxy alert dialog.
+                            // Get a handle for the I2P not installed alert dialog.
                             val i2pNotInstalledDialogFragment = ProxyNotInstalledDialog.displayDialog(proxyMode)
 
                             // Try to show the dialog.  Sometimes the window is not yet active if returning from Settings.
@@ -3710,8 +3671,8 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
             }
         }
 
-        // Reload the WebViews if requested and not waiting for the proxy.
-        if (reloadWebViews && !waitingForProxy) {
+        // Reload the WebViews if requested.
+        if (reloadWebViews) {
             // Reload the WebViews.
             for (i in 0 until webViewStateAdapter!!.itemCount) {
                 // Get the WebView tab fragment.
@@ -4316,68 +4277,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
             }
         }
 
-        // Create an Orbot status broadcast receiver.
-        orbotStatusBroadcastReceiver = object : BroadcastReceiver() {
-            override fun onReceive(context: Context, intent: Intent) {
-                // Get the content of the status message.
-                orbotStatus = intent.getStringExtra("org.torproject.android.intent.extra.STATUS")!!
-
-                // If Privacy Browser is waiting on the proxy, load the website now that Orbot is connected.
-                if ((orbotStatus == ProxyHelper.ORBOT_STATUS_ON) && waitingForProxy) {
-                    // Reset the waiting for proxy status.
-                    waitingForProxy = false
-
-                    // Get a list of the current fragments.
-                    val fragmentList = supportFragmentManager.fragments
-
-                    // Check each fragment to see if it is a waiting for proxy dialog.  Sometimes more than one is displayed.
-                    for (i in fragmentList.indices) {
-                        // Get the fragment tag.
-                        val fragmentTag = fragmentList[i].tag
-
-                        // Check to see if it is the waiting for proxy dialog.
-                        if (fragmentTag != null && fragmentTag == getString(R.string.waiting_for_proxy_dialog)) {
-                            // Dismiss the waiting for proxy dialog.
-                            (fragmentList[i] as DialogFragment).dismiss()
-                        }
-                    }
-
-                    // Reload existing URLs and load any URLs that are waiting for the proxy.
-                    for (i in 0 until webViewStateAdapter!!.itemCount) {
-                        // Get the WebView tab fragment.
-                        val webViewTabFragment = webViewStateAdapter!!.getPageFragment(i)
-
-                        // Get the fragment view.
-                        val fragmentView = webViewTabFragment.view
-
-                        // Only process the WebViews if they exist.
-                        if (fragmentView != null) {
-                            // Get the nested scroll WebView from the tab fragment.
-                            val nestedScrollWebView = fragmentView.findViewById<NestedScrollWebView>(R.id.nestedscroll_webview)
-
-                            // Get the waiting for proxy URL string.
-                            val waitingForProxyUrlString = nestedScrollWebView.waitingForProxyUrlString
-
-                            // Load the pending URL if it exists.
-                            if (waitingForProxyUrlString.isNotEmpty()) {  // A URL is waiting to be loaded.
-                                // Load the URL.
-                                loadUrl(nestedScrollWebView, waitingForProxyUrlString)
-
-                                // Reset the waiting for proxy URL string.
-                                nestedScrollWebView.waitingForProxyUrlString = ""
-                            } else {  // No URL is waiting to be loaded.
-                                // Reload the existing URL.
-                                nestedScrollWebView.reload()
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        // Register the Orbot status broadcast receiver.  `ContextCompat` must be used until the minimum API >= 34.
-        ContextCompat.registerReceiver(this, orbotStatusBroadcastReceiver, IntentFilter("org.torproject.android.intent.action.STATUS"), ContextCompat.RECEIVER_EXPORTED)
-
         // Get handles for views that need to be modified.
         val bookmarksHeaderLinearLayout = findViewById<LinearLayout>(R.id.bookmarks_header_linearlayout)
         val launchBookmarksActivityFab = findViewById<FloatingActionButton>(R.id.launch_bookmarks_activity_fab)
@@ -5820,12 +5719,8 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook
                 sharedPreferences.getString("homepage", getString(R.string.homepage_default_value))
             }
 
-            // Load the website if not waiting for the proxy.
-            if (waitingForProxy) {  // Store the URL to be loaded in the Nested Scroll WebView.
-                nestedScrollWebView.waitingForProxyUrlString = urlToLoadString!!
-            } else {  // Load the URL.
-                loadUrl(nestedScrollWebView, urlToLoadString!!)
-            }
+            // Load the URL.
+            loadUrl(nestedScrollWebView, urlToLoadString!!)
         } else {  // This is not the first tab.
             // Load the URL.
             loadUrl(nestedScrollWebView, urlString)
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/WaitingForProxyDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/WaitingForProxyDialog.kt
deleted file mode 100644 (file)
index 9089c50..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-3.0-or-later
- * SPDX-FileCopyrightText: 2019-2022 Soren Stoutner <soren@stoutner.com>
- *
- * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
- *
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-package com.stoutner.privacybrowser.dialogs
-
-import android.app.Dialog
-import android.os.Bundle
-import android.view.WindowManager
-
-import androidx.appcompat.app.AlertDialog
-import androidx.fragment.app.DialogFragment
-import androidx.preference.PreferenceManager
-
-import com.stoutner.privacybrowser.R
-
-class WaitingForProxyDialog : DialogFragment() {
-    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
-        // Use a builder to create the alert dialog.
-        val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
-
-        // Set the layout.
-        dialogBuilder.setView(R.layout.waiting_for_proxy_dialog)
-
-        // Create an alert dialog from the builder.
-        val alertDialog = dialogBuilder.create()
-
-        // Get a handle for the shared preferences.
-        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
-
-        // Get the screenshot preference.
-        val allowScreenshots = sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false)
-
-        // Disable screenshots if not allowed.
-        if (!allowScreenshots) {
-            // Disable screenshots.
-            alertDialog.window!!.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
-        }
-
-        // Return the alert dialog.
-        return alertDialog
-    }
-}
\ No newline at end of file
index bbe9507f6b56a30816577f7123a62dc155734a4e..1c88bf87557bc7f8c0ca232437bde8f245bf6d32 100644 (file)
@@ -20,7 +20,6 @@
 package com.stoutner.privacybrowser.helpers
 
 import android.content.Context
-import android.content.Intent
 import android.view.View
 
 import androidx.core.net.toUri
@@ -47,7 +46,6 @@ class ProxyHelper {
         const val TOR = "Tor"
         const val I2P = "I2P"
         const val CUSTOM = "Custom"
-        const val ORBOT_STATUS_ON = "ON"
     }
 
     fun setProxy(context: Context, activityView: View, proxyMode: String) {
@@ -59,21 +57,6 @@ class ProxyHelper {
             TOR -> {
                 // Add the proxy to the builder.  The proxy config builder can use a SOCKS proxy.
                 proxyConfigBuilder.addProxyRule("socks://localhost:9050")
-
-                // Ask Orbot to connect if its current status is not `"ON"`.
-                if (MainWebViewActivity.orbotStatus != ORBOT_STATUS_ON) {
-                    // Create an intent to request Orbot to start.
-                    val orbotIntent = Intent("org.torproject.android.intent.action.START")
-
-                    // Send the intent to the Orbot package.
-                    orbotIntent.setPackage("org.torproject.android")
-
-                    // Request a status response be sent back to this package.
-                    orbotIntent.putExtra("org.torproject.android.intent.extra.PACKAGE_NAME", context.packageName)
-
-                    // Make it so.
-                    context.sendBroadcast(orbotIntent)
-                }
             }
 
             I2P -> {
index c3a983e1516368624725df499d7948ac54ef7af6..25abd9c54315bf2052af8156c8904ef23bd4aac4 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: GPL-3.0-or-later
- * SPDX-FileCopyrightText: 2019-2025 Soren Stoutner <soren@stoutner.com>
+ * SPDX-FileCopyrightText: 2019-2026 Soren Stoutner <soren@stoutner.com>
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
  *
@@ -108,7 +108,6 @@ class NestedScrollWebView @JvmOverloads constructor(context: Context, attributeS
     var swipeToRefresh = false
     var ultraListEnabled = true
     var ultraPrivacyEnabled = true
-    var waitingForProxyUrlString = ""
     var webViewFragmentId: Long = 0
 
     // Define the private variables.
diff --git a/app/src/main/res/layout/waiting_for_proxy_dialog.xml b/app/src/main/res/layout/waiting_for_proxy_dialog.xml
deleted file mode 100644 (file)
index 5704d56..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright © 2019,2022 Soren Stoutner <soren@stoutner.com>.
-
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
-  Privacy Browser Android is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  Privacy Browser Android is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="wrap_content"
-    android:layout_width="wrap_content"
-    android:orientation="vertical" >
-
-    <ProgressBar
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:layout_marginTop="20dp"
-        android:layout_marginBottom="5dp" />
-
-    <TextView
-        android:id="@+id/waiting_for_proxy_textview"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:textAlignment="center"
-        android:layout_marginTop="5dp"
-        android:layout_marginBottom="20dp"
-        android:text="@string/waiting_for_orbot"
-        android:textSize="22sp"
-        android:textStyle="bold"
-        android:textColor="?android:textColorPrimary" />
-</LinearLayout>
\ No newline at end of file
index 843e27d87e426d4b4f4f2d7e5c42d378b98ea44a..9bcc3c5aed2a668e359535d1e18d4a9b0f3d753a 100644 (file)
     <string name="orbot_not_installed_message">Der Orbot-Proxy kann erst nach Installation der Orbot-App genutzt werden.</string>
     <string name="i2p_not_installed_title">I2P ist nicht installiert</string>
     <string name="i2p_not_installed_message">Der I2P-Proxy kann erst nach Installation der I2P-App genutzt werden.</string>
-    <string name="waiting_for_orbot">Warte auf die Verbindung zum Orbot-Proxy.</string>
     <string name="custom_proxy_invalid">Die benutzerdefinierte Proxy-URL ist ungültig.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index f22dff4a048c3ed220612a1e7e39e77b39e9db01..9067174dbeb4b00ea505948b3449dc07d19743a3 100644 (file)
     <string name="orbot_not_installed_message">El proxy a través de Orbot no funcionará a menos que la aplicación Orbot esté instalada.</string>
     <string name="i2p_not_installed_title">I2P No Instalado</string>
     <string name="i2p_not_installed_message">El proxy a través de I2P no funcionará a menos que la aplicación I2P esté instalada.</string>
-    <string name="waiting_for_orbot">Esperando a que Orbot se conecte.</string>
     <string name="custom_proxy_invalid">La URL del proxy personalizado no es válida.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index 70152318186e3e45815bb1532e060e648c0c3d57..37fc2a7ff644593e2470ea8231f6cbd5d9426bb6 100644 (file)
     <string name="orbot_not_installed_message">Le proxy via Orbot ne fonctionnera que si l\'application Orbot est installée.</string>
     <string name="i2p_not_installed_title">I2P non installé</string>
     <string name="i2p_not_installed_message">Le proxy via I2P ne fonctionnera que si l\'application I2P est installée.</string>
-    <string name="waiting_for_orbot">En attente de la connexion d\'Orbot.</string>
     <string name="custom_proxy_invalid">L\'URL du proxy personnalisé n\'est pas valide.</string>
 
     <!-- About Activity.  Android removes final spaces, but they can be manually specified with the Unicode `\u0020` formatting.
index b06783563f1d2976ccb936eee7dc37990c4eba0a..279f2a79f561056680c4292aa440bb0796afbbef 100644 (file)
     <string name="orbot_not_installed_message">Il Proxy con Orbot non funziona se non è installata la app Orbot.</string>
     <string name="i2p_not_installed_title">I2P Non Installato</string>
     <string name="i2p_not_installed_message">Il Proxy con I2P non funziona se non è installata la app I2P.</string>
-    <string name="waiting_for_orbot">In attesa della connessione di Orbot.</string>
     <string name="custom_proxy_invalid">La URL del proxy personalizzato non è valida.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index d869e41c24afd97747429825eb3b4e1e3508d6dc..d69e9cf509e469a1810abe4c69925f3db3d97eb7 100644 (file)
     <string name="orbot_not_installed_message">O proxy através do Orbot não funcionará a menos que o aplicativo Orbot esteja instalado.</string>
     <string name="i2p_not_installed_title">I2P Não  Instalado</string>
     <string name="i2p_not_installed_message">O proxy através do I2P não funcionará a menos que o aplicativo I2P esteja instalado.</string>
-    <string name="waiting_for_orbot">Esperando que o Orbot se conecte.</string>
     <string name="custom_proxy_invalid">O URL do proxy personalizado é inválido.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index a7eb623d2f165c6926d76831513f69a8cb244894..384bf562eacb55e12958acc5e08a0d0f3ede4620 100644 (file)
     <string name="orbot_not_installed_message">Прокси через Orbot работать не будет, если приложение Orbot не установлено.</string>
     <string name="i2p_not_installed_title">I2P не установлен</string>
     <string name="i2p_not_installed_message">Прокси через I2P работать не будет, если приложение I2P не установлено.</string>
-    <string name="waiting_for_orbot">Ожидание подключения Orbot.</string>
     <string name="custom_proxy_invalid">URL пользовательского прокси недействителен.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index 0a739da33383e10a91a87449c3ee21d1d5214112..d07e2962ff7588052e469f9f5df7a196a0f63a36 100644 (file)
     <string name="ssl_certificates">SSL Sertifikaları</string>
     <string name="tracking_ids">İzleme Kimlikleri</string>
 
-    <!-- Orbot. -->
-    <string name="waiting_for_orbot">Orbot\'un bağlanması bekleniyor.</string>
-
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
         The `%*$*` code inserts variables into the displayed text and should be preserved in translation.  <https://developer.android.com/reference/kotlin/java/util/Formatter> -->
     <string name="about_privacy_browser">Privacy Browser Hakkında</string>
index 81cb1479eef282f72fe7daf64fcdd8eecec7e7f6..d7eed555a68cd1df4cc8b1c9e985b11d188a8ee3 100644 (file)
     <string name="orbot_not_installed_message">Orbot应用被安装Orbot才会工作.</string>
     <string name="i2p_not_installed_title">I2P 未下载</string>
     <string name="i2p_not_installed_message">I2P应用被安装I2P才会工作.</string>
-    <string name="waiting_for_orbot">等待Orbot链接.</string>
     <string name="custom_proxy_invalid">自定义代理无效.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index 4d6d6a472314470333fa36f3e6fd2b33611dba44..0b76134f0f8a2781c389280850a46f395b87209b 100644 (file)
 
     <!-- Proxy. -->
     <string name="proxy_not_installed_dialog" translatable="false">Proxy not installed dialog</string>  <!-- This string is used to tag the proxy not installed dialog.  It is never displayed to the user. -->
-    <string name="waiting_for_proxy_dialog" translatable="false">Waiting for proxy dialog</string>  <!-- This string is used to tag the waiting for proxy dialog.  It is never displayed to the user. -->
     <string name="orbot_not_installed_title">Orbot Not Installed</string>
     <string name="orbot_not_installed_message">Proxying through Orbot will not work unless the Orbot app is installed.</string>
     <string name="i2p_not_installed_title">I2P Not Installed</string>
     <string name="i2p_not_installed_message">Proxying through I2P will not work unless the I2P app is installed.</string>
-    <string name="waiting_for_orbot">Waiting for Orbot to connect.</string>
     <string name="custom_proxy_invalid">The custom proxy URL is invalid.</string>
 
     <!-- About Activity.  Android removes double spaces, but extra spaces can be manually specified with the Unicode `\u0020` formatting.
index ba456754abd2d060cec0ad2f21f2703bff5ae64f..e43ccd12d10c401ae151881cab20d0030418c57f 100644 (file)
@@ -26,7 +26,7 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:9.2.0'
+        classpath 'com.android.tools.build:gradle:9.2.1'
         classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10'
 
         // NOTE: Do not place your application dependencies here; they belong