<!-- Ad Consent. -->
<string name="ad_consent_text">Navegador Privado Gratuíto muestra un anuncio de banner en la parte inferior de la pantalla.
Estos anuncios proceden del conjunto de proveedores habituales de Google y están configurados para que no sean personalizados.
- \n\nLa versión estándar de Navegador Privado no contiene anuncios.</string>
+ \n\nLa versión estándar de Navegador Privado no contiene anuncios de aplicaciones.</string>
<string name="close_browser">Cerrar el navegador</string>
<string name="accept_ads">Aceptar anuncios</string>
</resources>
\ No newline at end of file
<!-- Ad Consent. -->
<string name="ad_consent_text">Privacy Browser Free mostra un banner pubblicitario nella parte inferiore dello schermo.
Questi annunci provengono dai provider normalmente utilizzati da Google e sono configurati in modo da non essere personalizzati.
- \n\nLa versione standard di Privacy Browser non contiene annunci.</string>
+ \n\nLa versione standard di Privacy Browser non contiene annunci di applicazioni.</string>
<string name="close_browser">Chiudi il Browser</string>
<string name="accept_ads">Accetta gli Annunci</string>
</resources>
\ No newline at end of file
<!-- Ad Consent. -->
<string name="ad_consent_text">Privacy Browser Free отображает рекламный баннер в нижней части экрана.
- Реклама поÑ\81Ñ\82Ñ\83паеÑ\82 оÑ\82 Ñ\88иÑ\80око иÑ\81полÑ\8cзÑ\83емÑ\8bÑ\85 Google поÑ\81Ñ\82авÑ\89иков и настроена так, чтобы исключить персонализацию.
- \n\nСтандартная версия Privacy Browser не содержит рекламы.</string>
+ ÐÑ\82а Ñ\80еклама поÑ\81Ñ\82Ñ\83паеÑ\82 оÑ\82 Google и настроена так, чтобы исключить персонализацию.
+ \n\nСтандартная версия Privacy Browser не содержит рекламы приложений.</string>
<string name="close_browser">Закрыть браузер</string>
<string name="accept_ads">Разрешить рекламу</string>
</resources>
\ No newline at end of file
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27. Dezember 2018 - Mindest-API 19, Ziel-API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27. Dezember 2018</a> - Mindest-API 19, Ziel-API 28</p>
<ul>
<li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
</ul>
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27. Dezember 2018 - Mindest-API 19, Ziel-API 28</p>
+ <p><a href=https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f>27. Dezember 2018</a> - Mindest-API 19, Ziel-API 28</p>
<ul>
<li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
</ul>
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27 December 2018 - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 December 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
</ul>
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27 December 2018 - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 December 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
</ul>
<body>
<h3>2.15.1 (código de versión 39)</h3>
- <p>27 de diciembre de 2018 - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Corregir un error que provocaba que <a href="https://redmine.stoutner.com/issues/364">algunos dispositivos se bloquearan</a> al abrir una actividad secundaria.</li>
</ul>
<h3>2.15 (código de versión 38)</h3>
<body>
<h3>2.15.1 (código de versión 39)</h3>
- <p>27 de diciembre de 2018 - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Corregir un error que provocaba que <a href="https://redmine.stoutner.com/issues/364">algunos dispositivos se bloquearan</a> al abrir una actividad secundaria.</li>
</ul>
<h3>2.15 (código de versión 38)</h3>
<body>
<h3>2.15.1 (versione codice 39)</h3>
- <p>27 Dicembre 2018 - minima API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 Dicembre 2018</a> - minima API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Correzione di un baco che provocava <a href="https://redmine.stoutner.com/issues/364">il crash di alcuni dispositivi</a> aprendo una attivita' secondaria.</li>
</ul>
<h3>2.15 (versione codice 38)</h3>
<body>
<h3>2.15.1 (versione codice 39)</h3>
- <p>27 Dicembre 2018 - minima API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 Dicembre 2018</a> - minima API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Correzione di un baco che provocava <a href="https://redmine.stoutner.com/issues/364">il crash di alcuni dispositivi</a> aprendo una attivita' secondaria.</li>
</ul>
<h3>2.15 (versione codice 38)</h3>
<body>
<h3>2.15.1 (код версии 39)</h3>
- <p>27 декабря 2018 года - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 декабря 2018 года</a> - minimum API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Исправлена ошибка, приводившая к сбою приложения <a href="https://redmine.stoutner.com/issues/364">на некоторых устройствах</a> при открытии дополнительной активности.</li>
</ul>
<h3>2.15 (код версии 38)</h3>
<body>
<h3>2.15.1 (код версии 39)</h3>
- <p>27 декабря 2018 года - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 декабря 2018 года</a> - minimum API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>Исправлена ошибка, приводившая к сбою приложения <a href="https://redmine.stoutner.com/issues/364">на некоторых устройствах</a> при открытии дополнительной активности.</li>
</ul>
<h3>2.15 (код версии 38)</h3>
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27 December 2018 - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>İkinci bir işlem yaparken <a href="https://redmine.stoutner.com/issues/364">bazı cihazların çökmesine yol açan</a> problem düzeltildi.</li>
</ul>
<h3>2.15 (version code 38)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Domain <a href="https://redmine.stoutner.com/issues/160">ayarlarıyla kullanıcı aracısı değiştirme</a> ile ilgili sorun giderildi.</li>
<li>Çekmece <a href="https://redmine.stoutner.com/issues/250">tasarımları çentiklerle düzeltildi</a>.</li>
</ul>
<h3>2.14 (version code 37)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 December 2018</a> - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Add <a href="https://redmine.stoutner.com/issues/338">encrypted import and export</a> options.</li>
<li>Fix a bug when <a href="https://redmine.stoutner.com/issues/350">importing databases under certain circumstances</a>.</li>
</ul>
<h3>1.14 (version code 16)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 December 2016</a> - minimum API 19, target API 25</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 Aralık 2016</a> - minimum API 19, target API 25</p>
<ul>
<li>Implement <a href="https://redmine.stoutner.com/issues/31">ad blocking</a>.</li>
<li>Change the default user agent to PrivacyBrowser/1.0 <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7f0fda47dbd040262a8149e1e6d27f7abe9043ea">for real this time</a>.</li>
<body>
<h3>2.15.1 (version code 39)</h3>
- <p>27 December 2018 - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
- <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ <li>İkinci bir işlem yaparken <a href="https://redmine.stoutner.com/issues/364">bazı cihazların çökmesine yol açan</a> problem düzeltildi.</li>
</ul>
<h3>2.15 (version code 38)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Domain <a href="https://redmine.stoutner.com/issues/160">ayarlarıyla kullanıcı aracısı değiştirme</a> ile ilgili sorun giderildi.</li>
<li>Çekmece <a href="https://redmine.stoutner.com/issues/250">tasarımları çentiklerle düzeltildi</a>.</li>
</ul>
<h3>2.14 (version code 37)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 December 2018</a> - minimum API 19, target API 28</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 Aralık 2018</a> - minimum API 19, target API 28</p>
<ul>
<li>Add <a href="https://redmine.stoutner.com/issues/338">encrypted import and export</a> options.</li>
<li>Fix a bug when <a href="https://redmine.stoutner.com/issues/350">importing databases under certain circumstances</a>.</li>
</ul>
<h3>1.14 (version code 16)</h3>
- <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 December 2016</a> - minimum API 19, target API 25</p>
+ <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 Aralık 2016</a> - minimum API 19, target API 25</p>
<ul>
<li>Implement <a href="https://redmine.stoutner.com/issues/31">ad blocking</a>.</li>
<li>Change the default user agent to PrivacyBrowser/1.0 <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7f0fda47dbd040262a8149e1e6d27f7abe9043ea">for real this time</a>.</li>
// Setup a runnable to display `mainWebView` after a delay to allow the CSS to be applied.
Runnable displayWebViewRunnable = () -> {
- // Only display `mainWebView` if the progress bar is one. This prevents the display of the `WebView` while it is still loading.
+ // Only display `mainWebView` if the progress bar is gone. This prevents the display of the `WebView` while it is still loading.
if (progressBar.getVisibility() == View.GONE) {
mainWebView.setVisibility(View.VISIBLE);
}
// Check to see if Privacy Browser is waiting on Orbot.
if (!waitingForOrbot) { // We are not waiting on Orbot, so we need to process the URL.
- // We need to update `formattedUrlString` at the beginning of the load, so that if the user toggles JavaScript during the load the new website is reloaded.
+ // The formatted URL string must be updated at the beginning of the load, so that if the user toggles JavaScript during the load the new website is reloaded.
formattedUrlString = url;
// Display the formatted URL text.
// Apply the domain settings. This clears any settings from the previous domain.
applyDomainSettings(formattedUrlString, true, false);
} else { // `WebView` has loaded a webpage.
- // Set `formattedUrlString`.
- formattedUrlString = url;
+ // Set the formatted URL string. Getting the URL from the WebView instead of using the one provided by `onPageFinished` makes websites like YouTube function correctly.
+ formattedUrlString = mainWebView.getUrl();
- // Only update `urlTextBox` if the user is not typing in it.
+ // Only update the URL text box if the user is not typing in it.
if (!urlTextBox.hasFocus()) {
// Display the formatted URL text.
urlTextBox.setText(formattedUrlString);
shareIntent.setType("text/plain");
// Make it so.
- startActivity(Intent.createChooser(shareIntent, "Share URL"));
+ startActivity(Intent.createChooser(shareIntent, getString(R.string.share_url)));
+ return true;
+
+ case R.id.open_with:
+ // Convert the URL to an URI.
+ Uri shareUri = Uri.parse(formattedUrlString);
+
+ // Get the host.
+ String shareHost = shareUri.getHost();
+
+ // Create the open with intent with `ACTION_VIEW`.
+ Intent openWithIntent = new Intent(Intent.ACTION_VIEW);
+
+ // Set the data based on the host.
+ if ((shareHost != null) && (shareHost.endsWith("youtube.com") || shareHost.equals("play.google.com") || shareHost.equals("f-droid.org"))) { // Handle App URLs.
+ // Set the URI but not the MIME type. This should open all available apps.
+ openWithIntent.setData(shareUri);
+ } else { // Handle a generic URL.
+ // Set the URI and the MIME type. `"text/html"` should load browser options.
+ openWithIntent.setDataAndType(shareUri, "text/html");
+ }
+
+ // Flag the intent to open in a new task.
+ openWithIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ // Show the chooser.
+ startActivity(Intent.createChooser(openWithIntent, getString(R.string.open_with)));
return true;
case R.id.find_on_page:
// Create a download intent. Not specifying the action type will display the maximum number of options.
Intent downloadIntent = new Intent();
- // Set the URI and the mime type. `"*/*"` will display the maximum number of options.
+ // Set the URI and the MIME type. Specifying `text/html` displays a good number of options.
downloadIntent.setDataAndType(Uri.parse(url), "text/html");
// Flag the intent to open in a new task.
android:orderInCategory="1100"
app:showAsAction="never" />
+ <item
+ android:id="@+id/open_with"
+ android:title="@string/open_with"
+ android:orderInCategory="1200"
+ app:showAsAction="never" />
+
<item
android:id="@+id/find_on_page"
android:title="@string/find_on_page"
- android:orderInCategory="1200"
+ android:orderInCategory="1300"
app:showAsAction="never|collapseActionView" />
<item
android:id="@+id/add_to_homescreen"
android:title="@string/add_to_home_screen"
- android:orderInCategory="1300"
+ android:orderInCategory="1400"
app:showAsAction="never" />
<item
android:id="@+id/refresh"
android:title="@string/refresh"
- android:orderInCategory="1400"
+ android:orderInCategory="1500"
app:showAsAction="never" />
<item
android:id="@+id/ad_consent"
android:title="@string/ad_consent"
- android:orderInCategory="1500"
+ android:orderInCategory="1600"
app:showAsAction="never" />
</menu>
\ No newline at end of file
<!-- Activities. -->
<string name="privacy_browser">Privacy Browser</string>
<string name="privacy_browser_settings">Privacy Browser Einstellungen</string>
- <!-- For translations, `android_asset_path` should be the localization abbreviation. For example, Spanish is `es`. This should not be translated unless the Guide and About sections are localized. -->
+ <!-- For translations, `android_asset_path` should be the localization abbreviation. This should not be translated unless the Guide and About sections are localized. -->
<string name="android_asset_path">de</string>
<!-- MainWebView. -->
<!-- Activities. -->
<string name="privacy_browser">Navegador Privado</string>
<string name="privacy_browser_settings">Configuración de Navegador Privado</string>
- <!-- For translations, `android_asset_path` should be the localization abbreviation. For example, Spanish is `es`. This should not be translated unless the Guide and About sections are localized. -->
+ <!-- For translations, `android_asset_path` should be the localization abbreviation. This should not be translated unless the Guide and About sections are localized. -->
<string name="android_asset_path">es</string>
<!-- MainWebViewActivity. -->
<!-- Activities. -->
<string name="privacy_browser">Privacy Browser</string>
<string name="privacy_browser_settings">Impostazioni</string>
- <!-- For translations, `android_asset_path` should be the localization abbreviation. For example, Spanish is `es`. This should not be translated unless the Guide and About sections are localized. -->
+ <!-- For translations, `android_asset_path` should be the localization abbreviation. This should not be translated unless the Guide and About sections are localized. -->
<string name="android_asset_path">it</string>
<!-- MainWebView. -->
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- `tools:ignore="MissingTranslation"` allows release APKs to be built if translation strings are missing. The missing strings will fall back to English. -->
-<resources
- xmlns:tools="http://schemas.android.com/tools"
- tools:ignore="MissingTranslation" >
-
+<resources>
<!-- Activities. -->
<string name="privacy_browser">Privacy Browser</string>
<string name="privacy_browser_settings">Настройки Privacy Browser</string>
- <!-- For translations, `android_asset_path` should be the localization abbreviation. For example, Spanish is `es`. This should not be translated unless the Guide and About sections are localized. -->
+ <!-- For translations, `android_asset_path` should be the localization abbreviation. This should not be translated unless the Guide and About sections are localized. -->
<string name="android_asset_path">ru</string> -->
<!-- MainWebView. -->
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- `tools:ignore="MissingTranslation"` allows release APKs to be built if translation strings are missing. The missing strings will fall back to English. -->
-<resources
- xmlns:tools="http://schemas.android.com/tools"
- tools:ignore="MissingTranslation" >
-
+<resources>
<!-- Activities. -->
<string name="privacy_browser">Privacy Browser</string>
<string name="privacy_browser_settings">Privacy Browser Ayarları</string>
<string name="display_images">Display Images</string>
<string name="view_source">View Source</string>
<string name="share">Share</string>
+ <string name="share_url">Share URL</string>
<string name="find_on_page">Find on Page</string>
<string name="print">Print</string>
<string name="privacy_browser_web_page">Privacy Browser Web Page</string>
-• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
+• Corregir un error que provocaba que algunos dispositivos se bloquearan al abrir una actividad secundaria.
\ No newline at end of file
-• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
+• Correzione di un baco che provocava il crash di alcuni dispositivi aprendo una attivita' secondaria.
\ No newline at end of file
-• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
+• Исправлена ошибка, приводившая к сбою приложения на некоторых устройствах при открытии дополнительной активности.
\ No newline at end of file
-• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
+• İkinci bir işlem yaparken bazı cihazların çökmesine yol açan problem düzeltildi.
\ No newline at end of file