}
android {
- compileSdk 32
+ compileSdk 33
defaultConfig {
minSdk 23
- targetSdk 32
+ targetSdk 33
versionCode 60
versionName "3.11"
}
// Include the following AndroidX libraries.
implementation 'androidx.arch.core:core-common:2.1.0'
implementation 'androidx.arch.core:core-runtime:2.1.0'
- implementation 'androidx.appcompat:appcompat:1.4.2'
+ implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
- implementation 'androidx.core:core-ktx:1.8.0'
+ implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.drawerlayout:drawerlayout:1.1.1'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.viewpager:viewpager:1.0.0'
- implementation 'androidx.webkit:webkit:1.4.0'
+ implementation 'androidx.webkit:webkit:1.5.0'
// Include the Kotlin standard library. This should be the same version number listed in project build.gradle.
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10'
</head>
<body>
- <h3>3.11 (Version Code 60)</h3>
- <p>30. Juli 2022 - Mindest-API 23, Ziel-API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (Version Code 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30. Juli 2022</a> - Mindest-API 23, Ziel-API 32</p>
<ul>
<li>Option hinzugefügt, um den Standard-<a href="https://redmine.stoutner.com/issues/819">X-Requested-With header</a> zu verwenden.</li>
<li>Alle auf privacytests.org gelisteten <a href="https://redmine.stoutner.com/issues/863">Tracking-Anfragen / -Queries in URLs</a> werden ab sofort blockiert.</li>
</head>
<body>
- <h3>3.11 (version code 60)</h3>
- <p>30 July 2022 - minimum API 23, target API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (version code 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 July 2022</a> - minimum API 23, target API 32</p>
<ul>
<li>Create an option to use the default <a href="https://redmine.stoutner.com/issues/819">X-Requested-With header</a>.</li>
<li>Block all the <a href="https://redmine.stoutner.com/issues/863">URL query trackers</a> listed at privacytests.org.</li>
<p>Almost all websites with logins require cookies to be enabled for a user to log in.
That is how they make sure it is still you as you move from page to page on the site, and is, in my opinion, the only legitimate use for cookies.</p>
- <p>Android's System WebView treats cookies as an app level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
+ <p>Android's System WebView treats cookies as an app-level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
The result is that the cookies setting for whatever tab is currently displayed controls the cookies setting for all the background tabs as well.
If you have a tab in that background that has cookies enabled so that you can be logged into a website, and switch to a tab that doesn't have cookies enabled, it disabled cookies for all the tabs.
If the background tab makes a request, for example, to see if there is updated information, that request will be sent without cookies, which will cause the website to log you out.
</head>
<body>
- <h3>3.11 (código de versión 60)</h3>
- <p>30 de julio de 2022 - API mínimo 23, API objetivo 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (código de versión 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 de julio de 2022</a> - API mínimo 23, API objetivo 32</p>
<ul>
<li>Crear una opción para usar la cabecera <a href="https://redmine.stoutner.com/issues/819">X-Requested-With predeterminada</a>.</li>
<li>Bloquear todos los <a href="https://redmine.stoutner.com/issues/863">rastreadores de consultas de URL</a> listados en privacytests.org.</li>
</head>
<body>
- <h3>3.11 (version du code 60)</h3>
- <p>30 Juillet 2022 - API minimale : 23, API optimale : 32</p>
- <ul>
- <li>Create an option to use the default <a href="https://redmine.stoutner.com/issues/819">X-Requested-With header</a>.</li>
- <li>Block all the <a href="https://redmine.stoutner.com/issues/863">URL query trackers</a> listed at privacytests.org.</li>
- <li>Add a <a href="https://redmine.stoutner.com/issues/838">Share Message</a> option.</li>
- <li>Fix a bug that caused the bottom app bar to <a href="https://redmine.stoutner.com/issues/839">cover part of the website</a>.</li>
- <li>Fix duplicate tabs sometimes being <a href="https://redmine.stoutner.com/issues/807">opened on restart</a>.</li>
- <li>Display the bookmark opened in new tab snackbar <a href="https://redmine.stoutner.com/issues/818">above the bookmarks drawer</a>.</li>
- <li>Add the <a href="https://redmine.stoutner.com/issues/815">kernel version</a> to About > Version.</li>
- <li>Preserve the <a href="https://redmine.stoutner.com/issues/806">current bookmarks folder</a> on restart.</li>
- <li>Change the <a href="https://redmine.stoutner.com/issues/817">default value</a> of the custom proxy URL to socks://localhost:9050.</li>
- <li><a href="https://redmine.stoutner.com/issues/792">Add</a> <a href="https://redmine.stoutner.com/issues/789">various</a>
- <a href="https://redmine.stoutner.com/issues/875">updates</a> to the Guide.</li>
- <li>Make <a href="https://redmine.stoutner.com/issues/877">several</a> <a href="https://redmine.stoutner.com/issues/878">small</a>
- <a href="https://redmine.stoutner.com/issues/879">UI</a> improvements.</li>
- <li>Bump the <a href="https://redmine.stoutner.com/issues/828">target API to 32</a> (Android 12L).</li>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (version du code 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 Juillet 2022</a> - API minimale : 23, API optimale : 32</p>
+ <ul>
+ <li>Création d'une option pour utiliser <a href="https://redmine.stoutner.com/issues/819">l'en-tête X-Requested-With</a> par défaut.</li>
+ <li>Blocage de toutes les <a href="https://redmine.stoutner.com/issues/863">requêtes URL de pistage</a> listées dans privacytests.org.</li>
+ <li>Ajout d'une option <a href="https://redmine.stoutner.com/issues/838">Partager le message</a>.</li>
+ <li>Correction d'un bug qui causait le masquage d'une partie d'un site web par la <a href="https://redmine.stoutner.com/issues/839">barre applicative du bas de l'écran</a>.</li>
+ <li>Correction d'onglets parfois en double <a href="https://redmine.stoutner.com/issues/807">au redémarrage</a>.</li>
+ <li>Affichage du signet ouvert dans un nouvel onglet <a href="https://redmine.stoutner.com/issues/818">au-dessus du dossier de signets</a>.</li>
+ <li>Ajout de la <a href="https://redmine.stoutner.com/issues/815">version du noyau</a> dans A propos > Version.</li>
+ <li>Conservation du <a href="https://redmine.stoutner.com/issues/806">dossier courant des signets</a> au redémarrage.</li>
+ <li>Changement de la <a href="https://redmine.stoutner.com/issues/817">valeur par défaut</a> de l'URL du proxy personnalisé en socks://localhost:9050.</li>
+ <li><a href="https://redmine.stoutner.com/issues/792">Ajout</a> <a href="https://redmine.stoutner.com/issues/789">de diverses</a>
+ <a href="https://redmine.stoutner.com/issues/875">mises à jour</a> au Guide.</li>
+ <li>Développement <a href="https://redmine.stoutner.com/issues/877">de divers</a> <a href="https://redmine.stoutner.com/issues/878">petites</a>
+ <a href="https://redmine.stoutner.com/issues/879">UI</a> améliorations.</li>
+ <li>Passage de <a href="https://redmine.stoutner.com/issues/828">l'API cible à 32</a> (Android 12L).</li>
<li>Traduction française mise à jour fournie par <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
</ul>
<!--
Copyright © 2016-2018,2020-2022 Soren Stoutner <soren@stoutner.com>.
- Translation 2019,2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019,2021-2022 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
<p>La quasi-totalité des sites web avec des identifiants nécessitent que les cookies soient activés pour qu'un utilisateur puisse se connecter.
C'est ainsi qu'ils s'assurent qu'il s'agit toujours de vous lorsque vous passez d'une page à l'autre du site, et c'est, à mon avis, la seule utilisation légitime des cookies.</p>
- <p>Android's System WebView treats cookies as an app level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
- The result is that the cookies setting for whatever tab is currently displayed controls the cookies setting for all the background tabs as well.
- If you have a tab in that background that has cookies enabled so that you can be logged into a website, and switch to a tab that doesn't have cookies enabled, it disabled cookies for all the tabs.
- If the background tab makes a request, for example, to see if there is updated information, that request will be sent without cookies, which will cause the website to log you out.
- This is a limitation that will be removed with the release of <a href="https://www.stoutner.com/category/privacy-browser-android-roadmap/">Privacy WebView</a> in the 4.x series.</p>
+ <p>Le système WebView d'Android traite les cookies comme un paramètre au niveau de l'application,
+ ce qui signifie que les cookies sont soit activés soit désactivés pour tous les onglets de Privacy Browser.
+ Le résultat est que le paramètre des cookies pour l'onglet actuellement affiché contrôle également le paramètre des cookies pour tous les onglets en arrière-plan.
+ Si vous avez un onglet en arrière-plan dont les cookies sont activés pour que vous puissiez être connecté à un site Web, et que vous passez à un onglet dont les cookies ne sont pas activés,
+ les cookies sont désactivés pour tous les onglets.
+ Si l'onglet d'arrière-plan fait une demande, par exemple, pour voir s'il y a des informations mises à jour, cette demande sera envoyée sans cookies, ce qui fera que le site web vous déconnectera.
+ Il s'agit d'une limitation qui sera supprimée avec la sortie de <a href="https://www.stoutner.com/category/privacy-browser-android-roadmap/">Privacy WebView</a> dans la série 4.x.</p>
<p>Si les cookies sont activés mais que JavaScript est désactivé, l'icône de confidentialité sera jaune <img class="inline" src="../shared_images/warning.svg"> en guise d'avertissement.</p>
Ainsi, les contrôles des données de formulaire n'apparaissent plus sur les appareils Android plus récents.</p>
- <h3><svg class="header"><use href="../shared_images/delete_forever.svg#icon"/></svg> Clear and Exit</h3>
+ <h3><svg class="header"><use href="../shared_images/delete_forever.svg#icon"/></svg> Nettoyer et Quitter<</h3>
- <p>Clear and Exit runs every time the last tab is closed or Clear and Exit is selected from the navigation menu.
- By default it clears the cookies, DOM storage, form data, the logcat, and the WebView cache. Then it manually deletes the entire <code>app_webview</code> and <code>cache</code> directories.
- The behavior of Clear and Exit can be configured in the settings.</p>
+ <p>La fonction Nettoyer et Quitter s'exécute chaque fois que le dernier onglet est fermé ou que Nettoyer et Quitter est sélectionnée dans le menu de navigation.
+ Par défaut, elle efface les cookies, le stockage DOM, les données de formulaire, le logcat et le cache WebView.
+ Ensuite, elle supprime manuellement l'ensemble des répertoires <code>app_webview</code> et <code>cache</code>. Le comportement de Nettoyer et Quitter peut être configuré dans les paramètres.</p>
</body>
</html>
\ No newline at end of file
<!--
Copyright © 2016-2022 Soren Stoutner <soren@stoutner.com>.
- Translation 2019,2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019,2021-2022 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
<h3><svg class="header"><use href="../shared_images/link_off.svg#icon"/></svg> Modification d'URLs</h3>
- <p>Privacy Browser removes tracking IDs and AMP (<a href="https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages">Accelerated Mobile Pages</a>) redirects from URL queries.
- There is a blog post that is updated with the <a href="https://www.stoutner.com/url-modification/">current list</a> of modifications.
- URL modification can be turned off in the settings if it is causing issues.</p>
+ <p>Privacy Browser supprime les ID de suivi et les redirections AMP (<a href="https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages">Accelerated Mobile Pages</a>) des requêtes URL.
+ Il existe un article de blog qui est mis à jour avec la <a href="https://www.stoutner.com/url-modification/">liste actuelle</a> des modifications.
+ La modification des URL peut être désactivée dans les paramètres si elle pose des problèmes.</p>
- <h3><svg class="header"><use href="../shared_images/disabled_by_default.svg#icon"/></svg> X-Requested-With Header</h3>
+ <h3><svg class="header"><use href="../shared_images/disabled_by_default.svg#icon"/></svg> En-tête X-Requested-With</h3>
- <p>Google programmed Android’s WebView to send an X-Requested-With header with every request.
- The value of the X-Requested-With header is set to the application ID, which in the case of Privacy Browser is <code>com.stoutner.privacybrowser.standard</code>.
- Currently, it isn't possible to remove this header, but the value can be changed. By default, Privacy Browser sends a null (empty) value for the X-Requested-With header.
- Even though the spec allows for null header values, some web servers don't like them, so Privacy Browser has the option to revert to the default behavior of sending the app ID.
- Because this setting is cached when a URL is first loaded, and isn't changed when reloading a page or navigating history,
- changes to this setting may not be applied until Privacy Browser is restarted.
- There is a <a href="https://www.stoutner.com/the-x-requested-with-header/">blog post</a> with additional information.
- The X-Requested-With header will be <a href="https://redmine.stoutner.com/issues/37">completely removed</a> in the 4.x series with the release of Privacy WebView.</p>
+ <p>Google a programmé WebView d'Android pour envoyer un en-tête X-Requested-With avec chaque requête.
+ La valeur de l'en-tête X-Requested-With est définie par l'ID de l'application, qui dans le cas de Privacy Browser est <code>com.stoutner.privacybrowser.standard</code>.
+ Actuellement, il n'est pas possible de supprimer cet en-tête, mais la valeur peut être modifiée. Par défaut, Privacy Browser envoie une valeur nulle (vide) pour l'en-tête X-Requested-With.
+ Même si la spécification permet des valeurs d'en-tête nulles, certains serveurs web ne les aiment pas,
+ donc Privacy Browser a l'option de revenir au comportement par défaut d'envoyer l'ID de l'application.
+ Parce que ce paramètre est mis en cache lors du premier chargement d'une URL, et n'est pas modifié lors du rechargement d'une page ou de la navigation dans l'historique,
+ les modifications de ce paramètre peuvent ne pas être appliquées jusqu'à ce que Privacy Browser soit redémarré.
+ Il y a un <a href="https://www.stoutner.com/the-x-requested-with-header/">article de blog</a> avec des informations complémentaires.
+ L'en-tête X-Requested-With sera <a href="https://redmine.stoutner.com/issues/37">complètement supprimé</a> dans la série 4.x avec la sortie de Privacy WebView.</p>
</body>
</html>
\ No newline at end of file
</head>
<body>
- <h3>3.11 (versione codice 60)</h3>
- <p>30 Luglio 2022 - minima API 23, target API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (versione codice 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 Luglio 2022</a> - minima API 23, target API 32</p>
<ul>
<li>Aggiunta un'opzione per utilizzare l'<a href="https://redmine.stoutner.com/issues/819">intestazione X-Requested-With header</a> di default.</li>
<li>Blocco di tutte le <a href="https://redmine.stoutner.com/issues/863">query di tracciamento delle URL</a> elencate su privacytests.org.</li>
</head>
<body>
- <h3>3.11 (código da versão 60)</h3>
- <p>30 Julho 2022 - API mínimo 23, API alvo API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (código da versão 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 Julho 2022</a> - API mínimo 23, API alvo API 32</p>
<ul>
<li>Create an option to use the default <a href="https://redmine.stoutner.com/issues/819">X-Requested-With header</a>.</li>
<li>Block all the <a href="https://redmine.stoutner.com/issues/863">URL query trackers</a> listed at privacytests.org.</li>
<p>Quase todos os sites com logins exigem que os cookies sejam ativados para o login do usuário.
É assim que eles se certificam de que ainda é você conforme você passa de uma página para outra no site, e é, na minha opinião, o único uso legítimo para cookies.</p>
- <p>Android's System WebView treats cookies as an app level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
+ <p>Android's System WebView treats cookies as an app-level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
The result is that the cookies setting for whatever tab is currently displayed controls the cookies setting for all the background tabs as well.
If you have a tab in that background that has cookies enabled so that you can be logged into a website, and switch to a tab that doesn't have cookies enabled, it disabled cookies for all the tabs.
If the background tab makes a request, for example, to see if there is updated information, that request will be sent without cookies, which will cause the website to log you out.
</head>
<body>
- <h3>3.11 (код версии 60)</h3>
- <p>30 июля 2022 года - минимальный API 23, целевой API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (код версии 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 июля 2022 года</a> - минимальный API 23, целевой API 32</p>
<ul>
<li>Добавлена опция для использования по умолчанию <a href="https://redmine.stoutner.com/issues/819">заголовка X-Requested-With</a>.</li>
<li>Заблокированы все <a href="https://redmine.stoutner.com/issues/863">трекеры URL</a>, перечисленные на privacytests.org.</li>
</head>
<body>
- <h3>3.11 (version code 60)</h3>
- <p>30 Temmuz 2022 - minimum API 23, target API 32</p>
+ <h3><a href="https://www.stoutner.com/privacy-browser-3-11/">3.11</a> (version code 60)</h3>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff;h=aa9590ff1a1097733bdda217ce1fe6f1fc93afc3">30 Temmuz 2022</a> - minimum API 23, target API 32</p>
<ul>
<li>Create an option to use the default <a href="https://redmine.stoutner.com/issues/819">X-Requested-With header</a>.</li>
<li>Block all the <a href="https://redmine.stoutner.com/issues/863">URL query trackers</a> listed at privacytests.org.</li>
<p>Almost all websites with logins require cookies to be enabled for a user to log in.
That is how they make sure it is still you as you move from page to page on the site, and is, in my opinion, the only legitimate use for cookies.</p>
- <p>Android's System WebView treats cookies as an app level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
+ <p>Android's System WebView treats cookies as an app-level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
The result is that the cookies setting for whatever tab is currently displayed controls the cookies setting for all the background tabs as well.
If you have a tab in that background that has cookies enabled so that you can be logged into a website, and switch to a tab that doesn't have cookies enabled, it disabled cookies for all the tabs.
If the background tab makes a request, for example, to see if there is updated information, that request will be sent without cookies, which will cause the website to log you out.
private lateinit var logcatTextView: TextView
// Define the save logcat activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
- private val saveLogcatActivityResultLauncher = registerForActivityResult(ActivityResultContracts.CreateDocument()) { fileUri: Uri? ->
+ private val saveLogcatActivityResultLauncher = 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) {
try {
private Activity resultLauncherActivityHandle;
// Define the save URL activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
- private final ActivityResultLauncher<String> saveUrlActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(),
+ private final ActivityResultLauncher<String> saveUrlActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument("text/*"),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri fileUri) {
});
// Define the save webpage archive activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
- private final ActivityResultLauncher<String> saveWebpageArchiveActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(),
+ private final ActivityResultLauncher<String> saveWebpageArchiveActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument("multipart/related"),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri fileUri) {
});
// Define the save webpage image activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
- private final ActivityResultLauncher<String> saveWebpageImageActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(),
+ private final ActivityResultLauncher<String> saveWebpageImageActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument("image/png"),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri fileUri) {
// Delete the secondary `Service Worker` cache directory.
// A string array must be used because the directory contains a space and `Runtime.exec` will otherwise not escape the string correctly.
- Process deleteServiceWorkerProcess = runtime.exec(new String[] {"rm", "-rf", privateDataDirectoryString + "/app_webview/Service Worker/"});
+ Process deleteServiceWorkerProcess = runtime.exec(new String[] {"rm", "-rf", privateDataDirectoryString + "/app_webview/Default/Service Worker/"});
// Wait until the processes have finished.
deleteCacheProcess.waitFor();
}
}
+ // Get the application's private data directory, which will be something like `/data/user/0/com.stoutner.privacybrowser.standard`,
+ // which links to `/data/data/com.stoutner.privacybrowser.standard`.
+ String privateDataDirectoryString = getApplicationInfo().dataDir;
+
// Clear the cache, history, and logcat if Incognito Mode is enabled.
if (incognitoModeEnabled) {
// Clear the cache. `true` includes disk files.
// Manually delete cache folders.
try {
- // Get the application's private data directory, which will be something like `/data/user/0/com.stoutner.privacybrowser.standard`,
- // which links to `/data/data/com.stoutner.privacybrowser.standard`.
- String privateDataDirectoryString = getApplicationInfo().dataDir;
-
// Delete the main cache directory.
Runtime.getRuntime().exec("rm -rf " + privateDataDirectoryString + "/cache");
-
- // Delete the secondary `Service Worker` cache directory.
- // A `String[]` must be used because the directory contains a space and `Runtime.exec` will not escape the string correctly otherwise.
- Runtime.getRuntime().exec(new String[]{"rm", "-rf", privateDataDirectoryString + "/app_webview/Service Worker/"});
} catch (IOException exception) {
// Do nothing if an error is thrown.
}
}
}
+ // Clear the `Service Worker` directory.
+ try {
+ // A `String[]` must be used because the directory contains a space and `Runtime.exec` will not escape the string correctly otherwise.
+ Runtime.getRuntime().exec(new String[]{"rm", "-rf", privateDataDirectoryString + "/app_webview/Default/Service Worker/"});
+ } catch (IOException exception) {
+ // Do nothing.
+ }
+
// Get the current page position.
int currentPagePosition = webViewPagerAdapter.getPositionForId(nestedScrollWebView.getWebViewFragmentId());
import android.content.Intent
import android.content.res.Configuration
import android.net.Uri
+import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
// Get the current theme status.
val currentThemeStatus = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
- // Check to see if the app is in night mode.
- if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES && WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { // The app is in night mode.
+ // Check to see if the app is in night mode. This can be removed once the minimum API >= 33.
+ if ((Build.VERSION.SDK_INT < 33) && (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) && (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK))) { // The app is in night mode.
// Apply the dark WebView theme.
+ @Suppress("DEPRECATION")
WebSettingsCompat.setForceDark(tabWebView.settings, WebSettingsCompat.FORCE_DARK_ON)
}
<string name="domain_name">Nom de demaine</string>
<string name="domain_deleted">Domaine supprimé</string>
<string name="domain_name_instructions">Faire précéder par *. pour inclure l\'ensemble des sous-domaines (ex. *.stoutner.com)</string>
+ <string-array name="x_requested_with_header_array">
+ <item>Réglages système</item>
+ <item>En-tête X-Requested-With activé</item>
+ <item>En-tête X-Requested-With désactivé</item>
+ </string-array>
<string-array name="font_size_array">
<item>Réglages système</item>
<item>Taille de police personnalisée</item>
<item>Personnalisé</item>
</string-array>
<string name="custom_user_agent">User agent personnalisé</string>
+ <string name="x_requested_with_header">En-tête X-Requested-With</string>
+ <string name="x_requested_with_header_summary">Lorsque activé, Privacy Browser envoie une valeur nulle pour l\'en-tête X-Requested-With.
+ En général, ce n\'est pas un problème, mais certains sites Web ne l\'apprécient pas. La modification de ce paramètre entraînera le redémarrage de Privacy Browser.</string>
+ <string name="x_requested_with_header_explanation">Les modifications apportées à l\'en-tête X-Requested-With peuvent ne pas être appliquées avant le redémarrage de Privacy Browser.</string>
<string name="incognito_mode">Mode Incognito</string>
<string name="incognito_mode_summary">Vider l\'historique et le cache après le chargement de chaque page.
Dans le mode Incognito, le bouton Retour ferme l\'onglet (ou l\'application s\'il n\'y a qu\'un seul onglet).</string>
<string name="block_all_third_party_requests">Bloquer toutes les requêtes tierces</string>
<string name="block_all_third_party_requests_summary">Le blocage de toutes les requêtes tierces augmente la vie privée, mais détruit de nombreux sites Web.</string>
<string name="url_modification">Modifications d\'URL</string>
+ <string name="tracking_queries">Requêtes de pistage</string>
+ <string name="tracking_queries_summary">Supprimer les requêtes de suivi connues des URL.</string>
+ <string name="amp_redirects">Redirections AMP</string>
+ <string name="amp_redirects_summary">Supprimer les requêtes de redirection AMP (Accelerated Mobil Pages) connues des URLs.</string>
<string name="search">Moteur de Recherche</string>
<string-array name="search_entries">
<item>Mojeek</item>
<item>WebView default user agent</item> <!-- This item must not be translated into other languages because it is referenced in code. It is never displayed on the screen. -->
<item>Mozilla/5.0 (Android 12; Mobile; rv:102.0) Gecko/102.0 Firefox/102.0</item>
<item>Mozilla/5.0 (Linux; Android 12; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Mobile Safari/537.36</item>
- <item>Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Mobile/15E148 Safari/604.1</item>
+ <item>Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1</item>
<item>Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0</item>
<item>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36</item>
<item>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0</item>
<item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36</item>
<item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.71</item>
- <item>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15</item>
+ <item>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15</item>
<item>Custom user agent</item> <!-- This item must not be translated into other languages because it is referenced in code. It is never displayed on the screen. -->
</string-array>
<string name="custom_user_agent">Custom user agent</string>
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.1'
+ classpath 'com.android.tools.build:gradle:7.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
// NOTE: Do not place your application dependencies here; they belong
--- /dev/null
+• Création d'une option pour utiliser l'en-tête X-Requested-With par défaut.
+• Blocage de toutes les requêtes URL de pistage listées dans privacytests.org.
+• Ajout d'une option Partager le message.
+• Correction d'un bug qui causait le masquage d'une partie d'un site web par la barre applicative du bas de l'écran.
+• Correction d'onglets parfois en double au redémarrage.
+• Affichage du signet ouvert dans un nouvel onglet au-dessus du dossier de signets.
+• Ajout de la version du noyau dans A propos > Version.
+• Conservation du dossier courant des signets au redémarrage.
+• Changement de la valeur par défaut de l'URL du proxy personnalisé en socks://localhost:9050.
+• Ajout de diverses mises à jour au Guide.
+• Développement de divers petites UI améliorations.
+• Passage de l'API cible à 32 (Android 12L).
+• Traduction française mise à jour fournie par Kévin L.
\ No newline at end of file