From: Soren Stoutner Date: Wed, 8 Dec 2021 00:04:19 +0000 (-0700) Subject: Remove the free flavor. https://redmine.stoutner.com/issues/786 X-Git-Tag: v3.10~10 X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=commitdiff_plain;h=c906043ffe9b4d139e8d851e581a0eb46b935e42 Remove the free flavor. https://redmine.stoutner.com/issues/786 --- diff --git a/app/build.gradle b/app/build.gradle index 2d893f9e..e314f99d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,8 +57,8 @@ android { dimension "basic" } - free { - applicationId "com.stoutner.privacybrowser.free" + alt { + applicationId "com.stoutner.privacybrowser.alt" dimension "basic" } } @@ -83,7 +83,4 @@ dependencies { // Include the Google material library. implementation 'com.google.android.material:material:1.4.0' - - // Only compile AdMob ads for the free flavor. - freeImplementation 'com.google.android.gms:play-services-ads:20.5.0' } \ No newline at end of file diff --git a/app/src/alt/res/drawable/privacy_browser_foreground.xml b/app/src/alt/res/drawable/privacy_browser_foreground.xml new file mode 100644 index 00000000..63f55fff --- /dev/null +++ b/app/src/alt/res/drawable/privacy_browser_foreground.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/alt/res/mipmap-anydpi-v26/privacy_browser.xml b/app/src/alt/res/mipmap-anydpi-v26/privacy_browser.xml new file mode 100644 index 00000000..2cb3182a --- /dev/null +++ b/app/src/alt/res/mipmap-anydpi-v26/privacy_browser.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/alt/res/mipmap-anydpi-v26/privacy_browser_round.xml b/app/src/alt/res/mipmap-anydpi-v26/privacy_browser_round.xml new file mode 100644 index 00000000..2cb3182a --- /dev/null +++ b/app/src/alt/res/mipmap-anydpi-v26/privacy_browser_round.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/alt/res/mipmap-hdpi/privacy_browser.png b/app/src/alt/res/mipmap-hdpi/privacy_browser.png new file mode 100644 index 00000000..139d872f Binary files /dev/null and b/app/src/alt/res/mipmap-hdpi/privacy_browser.png differ diff --git a/app/src/alt/res/mipmap-hdpi/privacy_browser_round.png b/app/src/alt/res/mipmap-hdpi/privacy_browser_round.png new file mode 100644 index 00000000..e83375c2 Binary files /dev/null and b/app/src/alt/res/mipmap-hdpi/privacy_browser_round.png differ diff --git a/app/src/alt/res/mipmap-mdpi/privacy_browser.png b/app/src/alt/res/mipmap-mdpi/privacy_browser.png new file mode 100644 index 00000000..9c35d241 Binary files /dev/null and b/app/src/alt/res/mipmap-mdpi/privacy_browser.png differ diff --git a/app/src/alt/res/mipmap-mdpi/privacy_browser_round.png b/app/src/alt/res/mipmap-mdpi/privacy_browser_round.png new file mode 100644 index 00000000..c7f199a1 Binary files /dev/null and b/app/src/alt/res/mipmap-mdpi/privacy_browser_round.png differ diff --git a/app/src/alt/res/mipmap-xhdpi/privacy_browser.png b/app/src/alt/res/mipmap-xhdpi/privacy_browser.png new file mode 100644 index 00000000..341f4af7 Binary files /dev/null and b/app/src/alt/res/mipmap-xhdpi/privacy_browser.png differ diff --git a/app/src/alt/res/mipmap-xhdpi/privacy_browser_round.png b/app/src/alt/res/mipmap-xhdpi/privacy_browser_round.png new file mode 100644 index 00000000..031a23d8 Binary files /dev/null and b/app/src/alt/res/mipmap-xhdpi/privacy_browser_round.png differ diff --git a/app/src/alt/res/mipmap-xxhdpi/privacy_browser.png b/app/src/alt/res/mipmap-xxhdpi/privacy_browser.png new file mode 100644 index 00000000..f3e422d1 Binary files /dev/null and b/app/src/alt/res/mipmap-xxhdpi/privacy_browser.png differ diff --git a/app/src/alt/res/mipmap-xxhdpi/privacy_browser_round.png b/app/src/alt/res/mipmap-xxhdpi/privacy_browser_round.png new file mode 100644 index 00000000..1c1dfe79 Binary files /dev/null and b/app/src/alt/res/mipmap-xxhdpi/privacy_browser_round.png differ diff --git a/app/src/alt/res/mipmap-xxxhdpi/privacy_browser.png b/app/src/alt/res/mipmap-xxxhdpi/privacy_browser.png new file mode 100644 index 00000000..124ccb36 Binary files /dev/null and b/app/src/alt/res/mipmap-xxxhdpi/privacy_browser.png differ diff --git a/app/src/alt/res/mipmap-xxxhdpi/privacy_browser_round.png b/app/src/alt/res/mipmap-xxxhdpi/privacy_browser_round.png new file mode 100644 index 00000000..54df9c45 Binary files /dev/null and b/app/src/alt/res/mipmap-xxxhdpi/privacy_browser_round.png differ diff --git a/app/src/alt/res/values/strings.xml b/app/src/alt/res/values/strings.xml new file mode 100644 index 00000000..4a546093 --- /dev/null +++ b/app/src/alt/res/values/strings.xml @@ -0,0 +1,30 @@ + + + + + + + com.stoutner.privacybrowser.fileprovider.alt + + + Privacy Browser Test + + + Open with Privacy Browser Test. + \ No newline at end of file diff --git a/app/src/free/assets/de/about_permissions.html b/app/src/free/assets/de/about_permissions.html deleted file mode 100644 index 720be81d..00000000 --- a/app/src/free/assets/de/about_permissions.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - -

Voller Netzwerkzugriff

-

android.permission.INTERNET

-

Benötigt, damit WebView das Internet nutzen kann. Ohne diese Berechtigung wäre Privacy Browser “Kein Browser: Schützt Ihre Privatsphäre durch Fernbleiben von jeglicher Konnektivität”.

- -

Verknüpfungen installieren

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Benötigt, um Verknüpfungen zu Websites auf Ihrer Startseite zu erstellen.

- -
-
-
- -

Zusätzlich zeigt die kostenlose Variante des Privacy Browsers Werbung aus Google’s AdMob-Netzwerk an. In diesem Fall fügt AdMob die folgenden Berechtigungen hinzu, auch wenn diese nicht in der - Manifest-Datei des Quelltexts von Privacy Browser enthalten sind:

- -

Netzwerk-Verbindungen anzeigen

-

android.permission.ACCESS_NETWORK_STATE

-

Erlaubt den Werbeanzeigen mitzuteilen, wenn das Gerät mit dem Internet verbunden ist und wann nicht (vermutlich damit nicht versucht wird, Werbeanzeigen neu zu laden, wenn keine Verbindung besteht). - Diese können auch mitteilen, ob eine Verbindung via WLAN, 2G, 3G, 4G, usw. besteht.

- -

Schlaf-Modus des Telefons verhindern

-

android.permission.WAKE_LOCK

-

Erlaubt den Werbeanzeigen, das Gerät nicht in den Schlaf-Modus zu versetzen und das Display nicht zu dimmen. In Stoutners Tests konnte dieses Verhalten nicht festgestellt werden.

- -

Ausführung nach Systemstart

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Lässt AdMob nach dem Boot-Vorgang des Telefons starten, selbst wenn Privacy Browsers nicht gestartet wird. - Dies ist eine bedenkliche Berechtigung, da sie Google erlaubt, den Benutzer auszuspähen. - Es bestehen daher Überlegungen, einen anderen Werbungs-Dienstleister zu nutzen oder die kostenlose Variante von Privacy Browser gänzlich einzustellen.

- - \ No newline at end of file diff --git a/app/src/free/assets/de/about_privacy_policy.html b/app/src/free/assets/de/about_privacy_policy.html deleted file mode 100644 index 0f7e6065..00000000 --- a/app/src/free/assets/de/about_privacy_policy.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser Free

-

Privacy Browser Free sammelt keinerlei Benutzer-Informationen.

- -

Google Play

-

Google Play hat seine eigene Datenschutzerklärung. - Google stellt Entwicklern anonymisierte Installations-Informationen inklusive der Anzahl der Installationen unterteilt in die folgenden Kategorien bereit:

- - - -

Google Play Bewertungen

-

Google Play hat seine eigene Datenschutzerklärung. - Google stellt Entwicklern folgende anonymisierte Installations-Informationen bezüglich der Bewertungen bereit:

- - - -

Google Play Rezensionen

-

Google Play hat seine eigene Datenschutzerklärung. - Zusätzlich zum Namen des Rezensenten, der Bewertung und dem Text der Rezension (welche alle öffentlich zugänglich sind), - stellt Google dem Entwickler einige oder alle der folgenden Informationen zur Verfügung:

- - - -

Werbeeinblendungen

-

Privacy Browser Free blendet einen Werbebanner unten am Bildschirm ein und verwendet hierfür Googles Netzwerk AdMob, - dessen eigene Datenschutzbestimmungen hier zu finden sind. - Die Ausspielung dieser Werbebanner erfolgt dabei nicht-personalisiert. - AdMob überträgt zudem anonymisierte Zusammenfassungen folgender Informationen an die Entwickler:

- - - -

Direkte Kommunikation

-

Benutzer können z.B. per Email und Kommentaren auf stoutner.com direkt mit Stoutner Kontakt aufnehmen.

- -

Daten-Nutzung

-

Stoutner kann diese Informationen nutzen, um die Entwicklung von Privacy Browser zu unterstützen und den Status des Projekts an Benutzer zu melden. - Stoutner wird die Informationen niemals verkaufen oder an Dritte weitergeben, welche diese für Anzeigen oder Marketing nutzen.

- -
-

Revision 1.7, 14. Mai 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/en/about_permissions.html b/app/src/free/assets/en/about_permissions.html deleted file mode 100644 index 74f83561..00000000 --- a/app/src/free/assets/en/about_permissions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - -

Have full network access

-

android.permission.INTERNET

-

Required for the WebView to access the internet. Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely Off the Internet”.

- -

Install shortcuts

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Required to add shortcuts for websites to the launcher desktop.

- -
-
-
- -

In addition, Privacy Browser Free displays ads from Google’s AdMob network. For the free flavor, AdMob adds the following permissions even though they are not listed in the source code - manifest file.

- -

View network connections

-

android.permission.ACCESS_NETWORK_STATE

-

Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected). - They can also tell if you are connected via Wi-Fi, 2G, 3G, 4G, etc.

- -

Prevent phone from sleeping

-

android.permission.WAKE_LOCK

-

Allows the ads to keep the processor from sleeping and the screen from dimming, although in my testing I don’t think the ads actually do this.

- -

Run at startup

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Lets AdMob start when the phone boots even if you don't open Privacy Browser Free. This is a concerning permission because it can allow Google to spy on you. - I would either like to find a different ad provider or drop the free flavor of Privacy Browser entirely.

- - \ No newline at end of file diff --git a/app/src/free/assets/en/about_privacy_policy.html b/app/src/free/assets/en/about_privacy_policy.html deleted file mode 100644 index 6b7a5a16..00000000 --- a/app/src/free/assets/en/about_privacy_policy.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser Free

-

Privacy Browser Free does not collect any user information.

- - -

Google Play

-

Google Play has its own privacy policy. - Google provides anonymized summary installation information to developers, including the number of installs organized by the following categories.

- - - -

Google Play Ratings

-

Google Play has its own privacy policy. - Google provides developers with anonymized summaries of the following information related to user ratings.

- - - -

Google Play Reviews

-

Google Play has its own privacy policy. - In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.

- - - -

Advertisements

-

Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network, - which has its own privacy policy. - These ads are set to be non-personalized. - AdMob reports anonymized summaries of the following information to developers.

- - - -

Direct Communications

-

Users may choose to send direct communications to Stoutner, like email messages and comments on stoutner.com.

- - -

Use of Information

-

Stoutner may use this information to assist in the development of Privacy Browser and communicate the status of the project to users. - Stoutner will never sell this information nor transfer it to any third party that would use it for advertising or marketing.

- -
-

Revision 1.7, 14 May 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/es/about_permissions.html b/app/src/free/assets/es/about_permissions.html deleted file mode 100644 index 9713959d..00000000 --- a/app/src/free/assets/es/about_permissions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - -

Tener acceso completo a la red

-

android.permission.INTERNET

-

Requerido para que WebView consiga acceso a internet. Sin este permiso, Navegador Privado sería, “Sin Navegador: Protegiendo su privacidad estando completamente desconectado de internet”.

- -

Instalar accesos directos

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Requerido para añadir accesos directos de páginas web en el escritorio.

- -
-
-
- -

Además, la versión libre de Navegador Privado muestra anuncios de la red AdMob de Google. Para la versión gratuita, AdMob añade los siguientes permisos, aunque no aparecen en el archivo de manifiesto - del código fuente.

- -

Ver conexiones de red

-

android.permission.ACCESS_NETWORK_STATE

-

Permite a los anuncios saber si el dispositivo está conectado a internet y cuando no (probablemente para no tratar de recargar un anuncio cuando está desconectado). - También les permite saber si está conectado por wifi, 2G, 3G, 4G, etcétera.

- -

Impedir que el teléfono entre en modo de suspensión

-

android.permission.WAKE_LOCK

-

Permite a los anuncios impedir al procesador dormir y a la pantalla atenuar, aunque en mis pruebas no parece que los anuncios lo hagan así.

- -

Ejecutar al inicio

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Permite que AdMob se inicie cuando el teléfono arranca, incluso si no se abre la versión gratuita de Navegador Privado. Este es un permiso preocupante porque puede permitir que Google te espíe. - Me gustaría encontrar un proveedor de publicidad diferente o abandonar la versión gratuita de Navegador Privado por completo.

- - \ No newline at end of file diff --git a/app/src/free/assets/es/about_privacy_policy.html b/app/src/free/assets/es/about_privacy_policy.html deleted file mode 100644 index 91844d24..00000000 --- a/app/src/free/assets/es/about_privacy_policy.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - -

Navegador Privado Gratuito

-

Navegador Privado Gratuito no recoge ninguna información del usuario.

- - -

Google Play

-

Google Play tiene su propia política de privacidad. - Google proporciona información resumida y anónima de instalación a los desarrolladores, incluyendo el número de instalaciones, organizadas por las siguientes categorías.

- - - -

Calificaciones de Google Play

-

Google Play tiene su propia política de privacidad. - Google proporciona a los desarrolladores resúmenes anónimos de la siguiente información relativa a las valoraciones de los usuarios.

- - - -

Comentarios de Google Play

-

Google Play tiene su propia política de privacidad. - Además del nombre del comentador, la calificación y el texto del comentario (las cuales están disponibles públicamente), - Google proporciona alguna o toda la siguiente información al desarrollador.

- - - -

Anuncios

-

Navegador Privado Gratuito muestra un banner publicitario en la parte inferior de la pantalla mediante la red AdMob de Google, - que tiene su propia política de privacidad. - Estos anuncios están configurados para ser no personalizados. - AdMob reporta resúmenes anónimos de la siguiente información a los desarrolladores.

- - - -

Comunicaciones directas

-

Los usuarios pueden elegir enviar comunicaciones directas a Stoutner, como mensajes de correo electrónico y comentarios en stoutner.com.

- -

Uso de Información

-

Stoutner puede utilizar esta información para ayudar en el desarrollo de Navegador Privado y comunicar el estado del proyecto a los usuarios. - Stoutner nunca vendrá la información ni la transferirá a ninguna tercera parte que la pudiera usar para publicidad o marketing.

- -
-

Revisión 1.7, 14 de mayo de 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/fr/about_permissions.html b/app/src/free/assets/fr/about_permissions.html deleted file mode 100644 index fb5caaaf..00000000 --- a/app/src/free/assets/fr/about_permissions.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - -

Disposer d'un accès réseau complet

-

android.permission.INTERNET

-

Requis pour que WebView puisse accéder à Internet. Sans cette autorisation, Privacy Browser serait «No Browser: protégez votre vie privée en restant complètement hors d'Internet».

- -

Installer les raccourcis

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Requis pour ajouter des raccourcis pour les sites Web au bureau du programme de lancement.

- -
-
-
- -

En outre, Privacy Browser Free affiche des publicités provenant du réseau AdMob de Google. - Pour la version gratuite, AdMob ajoute les autorisations suivantes, même si elles ne sont pas répertoriées dans le code source - fichier de manifeste.

- -

Afficher les connexions réseau

-

android.permission.ACCESS_NETWORK_STATE

-

Permet aux annonces de dire quand vous êtes connecté à Internet et quand vous n'êtes pas (vraisemblablement pour ne pas essayer de recharger une annonce lorsque vous êtes déconnecté). - Ils peuvent également savoir si vous êtes connecté via Wi-Fi, 2G, 3G, 4G, etc.

- -

Empêcher le téléphone de dormir

-

android.permission.WAKE_LOCK

-

Permet aux annonces d'empêcher le processeur de dormir et l'éclairage de l'écran, bien que lors de mes tests, je ne pense pas que les annonces le fassent réellement.

- -

Lancer au démarrage

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Laisser AdMob démarrer au démarrage du téléphone même si vous n'ouvrez pas Privacy Browser Free. C'est une permission inquiétante car elle peut permettre à Google de vous espionner. - J'aimerais soit trouver un autre fournisseur de publicité, soit abandonner entièrement la version gratuite de Privacy Browser.

- - \ No newline at end of file diff --git a/app/src/free/assets/fr/about_privacy_policy.html b/app/src/free/assets/fr/about_privacy_policy.html deleted file mode 100644 index 18322cd9..00000000 --- a/app/src/free/assets/fr/about_privacy_policy.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser

-

Privacy Browser ne collecte aucune information sur l'utilisateur.

- - -

Google Play

-

Google Play a sa propre règle de confidentialité . - Google fournit aux développeurs des informations d'installation récapitulatives et anonymisées, notamment le nombre d'installations organisées selon les catégories suivantes.

- - - -

Notes Google Play

-

Google Play a sa propre règle de confidentialité . - Google fournit aux développeurs des résumés anonymisés des informations suivantes relatives aux évaluations des utilisateurs.

- - - -

Avis Google Play

-

Google Play a sa propre règle de confidentialité. - Outre le nom du réviseur, l'évaluation et le texte de la révision (tous disponibles publiquement), Google fournit au développeur tout ou partie des informations suivantes.

- - - -

Annonces

-

Privacy Browser Free affiche une bannière publicitaire en bas de l'écran à l'aide du réseau AdMob de Google, - qui a sa propre politique de confidentialité. - Ces annonces sont définies pour être non-personalisées. - AdMob transmet aux développeurs des résumés anonymisés des informations suivantes.

- - - -

Communications directes

-

Les utilisateurs peuvent choisir d'envoyer des communications directes à Stoutner, telles que des courriels et des commentaires sur stoutner.com.

- - -

Utilisation de l'information

-

Stoutner peut utiliser ces informations pour contribuer au développement de Privacy Browser et communiquer le statut du projet aux utilisateurs. - Stoutner ne vendra jamais ces informations ni ne les transférera à des tiers qui les utiliseraient à des fins publicitaires ou marketing.

- -
-

Revision 1.7, 14 Mai 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/it/about_permissions.html b/app/src/free/assets/it/about_permissions.html deleted file mode 100644 index b453f79c..00000000 --- a/app/src/free/assets/it/about_permissions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - -

Accesso completo alla rete

-

android.permission.INTERNET

-

E' richiesto per permettere l'accesso Internet a WebView. Senza questo permesso, Privacy Browser sarebbe “Nessun Browser: Protegge la tua Privacy restando completamente isolato da Internet”.

- -

Creazione di collegamenti

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

E' richiesto per poter creare collegamenti a siti web sulla schermata principale del dispositivo.

- -
-
-
- -

Oltre a questo, Privacy Browser Free mostra gli annunci da Google’s AdMob network. Per la versione Free, AdMob aggiunge i seguenti permessi anche se essi non sono elencati nel codice sorgente, nel - file manifest.

- -

Visualizzare connessioni di rete

-

android.permission.ACCESS_NETWORK_STATE

-

Permette agli annunci di dire quando si è o non si è connessi a internet (presumibilmente per evitare il tentativo di ricaricare un annuncio quando non si è connessi). - Gli annunci possono anche dire se si è connessi via Wi-Fi, 2G, 3G, 4G, ecc.

- -

Impedire al dispositivo di entrare in modalità sleeping

-

android.permission.WAKE_LOCK

-

Permette agli annunci di impedire al processore di entrare in modalità sleeping e allo schermo di spegnersi, anche se dopo vari test eseguiti non sembra che il comportamento sia questo.

- -

Esecuzione in avvio

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Permette l'avvio di AdMob quando si avvia il dispositivo anche se non è ancora stato aperto Privacy Browser Free. Questo è un permesso pericoloso perché può permettere a Google di spiare l'utente. - Sarebbe quindi meglio trovare un provider diverso o dismettere completamente la versione free di Privacy Browser.

- - \ No newline at end of file diff --git a/app/src/free/assets/it/about_privacy_policy.html b/app/src/free/assets/it/about_privacy_policy.html deleted file mode 100644 index 53aaa81f..00000000 --- a/app/src/free/assets/it/about_privacy_policy.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser Free

-

Privacy Browser Free non raccoglie alcuna informazione dagli utenti.

- - -

Google Play

-

Google Play ha una propria privacy policy. - Google fornisce agli sviluppatori informazioni anonime sulle installazioni, incluso il numero di installazioni, secondo le seguenti categorie.

- - - -

Ratings di Google Play

-

Google Play ha una propria privacy policy. - Google fornisce agli sviluppatori sintesi anonime delle seguenti informazioni collegate ai ratings degli utenti.

- - - -

Recensioni di Google Play

-

Google Play ha una propria privacy policy. - Oltre al nome del recensore, al rating, e al testo della recensione (i quali sono tutti pubblicamente disponibili), Google fornisce alcune o tutte le seguenti informazioni allo sviluppatore.

- - - -

Annunci

-

Privacy Browser Free mostra un banner pubblicitario nella parte inferiore dello schermo utilizzando la Google's AdMob network, - che ha una propria privacy policy. - Questi annunci sono impostati in modo da essere non-personalizzati. - AdMob fornisce agli sviluppatori sintesi anonime delle seguenti informazioni.

- - - -

Comunicazioni Dirette

-

E' possibile inviare comunicazioni dirette a Stoutner, ad esempio email o commenti su stoutner.com.

- - -

Utilizzo delle informazioni

-

Stoutner si riserva l'utilizzo di queste informazioni come supporto per lo sviluppo di Privacy Browser e per comunicazioni sullo stato del progetto verso gli utenti. - Stoutner non rivenderà o comunque non trasferirà mai nessuna informazione a terze parti che potrebbero utilizzarle a scopi pubblicitari o di marketing.

- -
-

Revisione 1.7, 14 Maggio 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/pt-rBR/about_permissions.html b/app/src/free/assets/pt-rBR/about_permissions.html deleted file mode 100644 index 74f83561..00000000 --- a/app/src/free/assets/pt-rBR/about_permissions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - -

Have full network access

-

android.permission.INTERNET

-

Required for the WebView to access the internet. Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely Off the Internet”.

- -

Install shortcuts

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Required to add shortcuts for websites to the launcher desktop.

- -
-
-
- -

In addition, Privacy Browser Free displays ads from Google’s AdMob network. For the free flavor, AdMob adds the following permissions even though they are not listed in the source code - manifest file.

- -

View network connections

-

android.permission.ACCESS_NETWORK_STATE

-

Allows the ads to tell when you are connected to the internet and when you aren’t (presumably so they don’t try to reload an ad when you are disconnected). - They can also tell if you are connected via Wi-Fi, 2G, 3G, 4G, etc.

- -

Prevent phone from sleeping

-

android.permission.WAKE_LOCK

-

Allows the ads to keep the processor from sleeping and the screen from dimming, although in my testing I don’t think the ads actually do this.

- -

Run at startup

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Lets AdMob start when the phone boots even if you don't open Privacy Browser Free. This is a concerning permission because it can allow Google to spy on you. - I would either like to find a different ad provider or drop the free flavor of Privacy Browser entirely.

- - \ No newline at end of file diff --git a/app/src/free/assets/pt-rBR/about_privacy_policy.html b/app/src/free/assets/pt-rBR/about_privacy_policy.html deleted file mode 100644 index 6b7a5a16..00000000 --- a/app/src/free/assets/pt-rBR/about_privacy_policy.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser Free

-

Privacy Browser Free does not collect any user information.

- - -

Google Play

-

Google Play has its own privacy policy. - Google provides anonymized summary installation information to developers, including the number of installs organized by the following categories.

- - - -

Google Play Ratings

-

Google Play has its own privacy policy. - Google provides developers with anonymized summaries of the following information related to user ratings.

- - - -

Google Play Reviews

-

Google Play has its own privacy policy. - In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.

- - - -

Advertisements

-

Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network, - which has its own privacy policy. - These ads are set to be non-personalized. - AdMob reports anonymized summaries of the following information to developers.

- - - -

Direct Communications

-

Users may choose to send direct communications to Stoutner, like email messages and comments on stoutner.com.

- - -

Use of Information

-

Stoutner may use this information to assist in the development of Privacy Browser and communicate the status of the project to users. - Stoutner will never sell this information nor transfer it to any third party that would use it for advertising or marketing.

- -
-

Revision 1.7, 14 May 2019

- - \ No newline at end of file diff --git a/app/src/free/assets/ru/about_permissions.html b/app/src/free/assets/ru/about_permissions.html deleted file mode 100644 index 41ab8816..00000000 --- a/app/src/free/assets/ru/about_permissions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - -

Полный доступ к сети

-

android.permission.INTERNET

-

Требуется для доступа WebView к интернету. Без этого разрешения Privacy Browser будет отображать “Нет браузера: угрозы вашей конфиденциальности нет из-за отсутствия доступа к интернету”.

- -

Установка ярлыков

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Требуется для добавления ярлыков веб-сайтов на главный экран.

- -
-
-
- -

Кроме того, в Privacy Browser Free отображается реклама из сети Google AdMob. - Для бесплатного варианта браузера, AdMob добавляет следующие разрешения, даже если они не перечислены в файле исходного кода - манифеста.

- -

Просмотр сетевых подключений

-

android.permission.ACCESS_NETWORK_STATE

-

Позволяет рекламе узнавать наличие подключения к интернету (возможно, таким образом предотвращаются попытки загрузки рекламы при отсутствии активного соединения). - Кроме того, передается тип подключения - Wi-Fi, 2G, 3G, 4G, и т.д.

- -

Предотвращение засыпания устройства

-

android.permission.WAKE_LOCK

-

Позволяет рекламе предотвращать переход процессора в режим сна и экран от выключения. Результаты тестировании не свидетельствуют о том, что реклама на самом деле это делает.

- -

Запуск при загрузке

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Обеспечивает запуск AdMob при загрузке телефона, даже если вы не открываете Privacy Browser Free. - Это разрешение вызывает беспокойство, поскольку Google может шпионить за вами. - Я хотел бы либо найти другого рекламного провайдера или полностью отказаться от бесплатного варианта Privacy Browser.

- - \ No newline at end of file diff --git a/app/src/free/assets/ru/about_privacy_policy.html b/app/src/free/assets/ru/about_privacy_policy.html deleted file mode 100644 index ed07eed1..00000000 --- a/app/src/free/assets/ru/about_privacy_policy.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser

-

Privacy Browser не собирает никакой пользовательской информации.

- - -

Google Play

-

Google Play имеет собственную политику конфиденциальности. - Google предоставляет разработчикам сводную анонимизированную информацию об установке, включающую их количество, организованную по следующим категориям.

- - - -

Рейтинги Google Play

-

Google Play имеет собственную политику конфиденциальности. - Google предоставляет разработчикам анонимизированные сводки следующей информации, связанной с пользовательскими рейтингами.

- - - -

Отзывы Google Play

-

Google Play имеет собственную политику конфиденциальности. - Помимо имени автора отзыва, оценки и текста отзыва (все они доступны публично), Google предоставляет разработчику некоторую или всю следующую информацию.

- - - -

Реклама

-

Privacy Browser Free отображает рекламный баннер в нижней части экрана с помощью сети Google AdMob, - которая имеет собственную политику конфиденциальности. - Эта реклама не персонализируется. - AdMob отправляет анонимные отчеты разработчикам, содержащие следующую информацию.

- - - -

Прямая связь

-

Пользователи могут напрямую связаться со Stoutner при помощи электронной почты и комментариев на stoutner.com.

- - -

Использование информации

-

Stoutner может использовать эту информацию, как помощь в разработке Privacy Browser и сообщать о статусе проекта пользователям. - Stoutner никогда не будет продавать эту информацию или передавать ее третьей стороне, которая использовала бы ее для рекламы или маркетинга.

- -
-

Ревизия 1.7, 14 мая 2019 года

- - \ No newline at end of file diff --git a/app/src/free/assets/tr/about_permissions.html b/app/src/free/assets/tr/about_permissions.html deleted file mode 100644 index 8bdd19a7..00000000 --- a/app/src/free/assets/tr/about_permissions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - -

Tam ağ erişimine sahip olma

-

android.permission.INTERNET

-

WebView’ın internete erişimi için gereklidir. Bu izin olmadan, Privacy Browser, “İnternet Olmadan Gizliliğinizi Koruyan Bir Tarayıcı” olacaktır.

- -

Kısayolları yükleme

-

com.android.launcher.permission.INSTALL_SHORTCUT

-

Başlatıcı masaüstüne web sayfalarının kısayollarını eklemek için gereklidir.

- -
-
-
- -

In addition, Privacy Browser Free displays ads from Google’s AdMob network. For the free flavor, AdMob adds the following permissions even though they are not listed in the source code - manifest file.

- -

Ağ bağlantılarını görüntüle

-

android.permission.ACCESS_NETWORK_STATE

-

Reklamların, internet erişimine ne zaman sahip olup olmadığınızı bilmesine izin verir (internet erişiminiz yoksa muhtemelen reklamı tekrar yüklemeyi denemezler). - Ayrıca internete Wi-Fi, 2g, 3g, 4g vs. bağlantı şekillerinden hangisiyle bağlandığınızı da anlayabilirler.

- -

Telefonun uyku moduna geçmesini engelleme

-

android.permission.WAKE_LOCK

-

Reklamların, işlemcinin uyku moduna geçmesini ve ekranın kararmasını engellemesine izin verir. Kişisel deneyimime göre reklamların bunu yapabileceğini sanmıyorum.

- -

Run at startup

-

android.permission.RECEIVE_BOOT_COMPLETED

-

Lets AdMob start when the phone boots even if you don't open Privacy Browser Free. This is a concerning permission because it can allow Google to spy on you. - I would either like to find a different ad provider or drop the free flavor of Privacy Browser entirely.

- - \ No newline at end of file diff --git a/app/src/free/assets/tr/about_privacy_policy.html b/app/src/free/assets/tr/about_privacy_policy.html deleted file mode 100644 index 210267b6..00000000 --- a/app/src/free/assets/tr/about_privacy_policy.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - -

Privacy Browser

-

Privacy Browser herhangi bir kullanıcı bilgisi toplamaz.

- - -

Google Play

-

Google Play kendisine özgü gizlilik politikasına sahiptir. - Google, aşağıdaki kategorilerce düzenlenen, indirme sayıları da dahil, anonimleştirilmiş özet kurulum bilgilerini geliştiricilere verir.

- - - -

Google Play Derecelendirmeleri

-

Google Play kendisine özgü gizlilik politikasına sahiptir. - Google, kullanıcı değerlendirmeleriyle ilişkili aşağıdaki bilgilerin anonimleştirilmiş özetlerini geliştiricilere verir.

- - - -

Google Play Kritikleri

-

Google Play kendisine özgü gizlilik politikasına sahiptir. - Google, inceleme yapan kişinin ismine, değerlendirmeye ve inceleme metninine (tümü halka açıktır) ek olarak, aşağıdaki bilgilerin bir kısmını ya da tamamını geliştiricilere verir.

- - - -

Reklamlar

-

Privacy Browser Ücretsiz, Google'ın, kendisine özgü gizlilik politikası olan - AdMob ağını kullanarak ekranın alt kısmında bir banner reklam gösterir. - Bu reklamlar kişiselleştirilmemiş olarak ayarlanmıştır. - AdMob, geliştiricilere aşağıdaki bilgilerin anonimleştirilmiş özetlerini rapor eder.

- - - -

Doğrudan İletişim

-

Kullanıcılar, stoutner.com üzerinden Stoutner ile doğrudan iletişime (E-posta atmak ya da yorum yapmak gibi) geçebilir.

- - -

Bilgilerin Kullanımı

-

Stoutner bu bilgileri, Privacy Browser'ın geliştirilmesine yardımcı olması ve kullanıcılarla projenin durumuyla ilgili iletişime geçmek için kullanabilir. - Stoutner asla bu bilgileri, reklam ve pazarlama için kullanacak üçüncü kişilere vermez ya da satmaz.

- -
-

Revizyon 1.7, 14 Mayıs 2019

- - \ No newline at end of file diff --git a/app/src/free/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt b/app/src/free/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt deleted file mode 100644 index f22367cf..00000000 --- a/app/src/free/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright © 2018-2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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 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. If not, see . - */ - -package com.stoutner.privacybrowser.dialogs - -import android.app.Dialog -import android.content.DialogInterface -import android.os.Build -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 -import com.stoutner.privacybrowser.helpers.AdConsentDatabaseHelper -import com.stoutner.privacybrowser.helpers.AdHelper -import kotlin.system.exitProcess - -class AdConsentDialog : DialogFragment() { - // Declare the class variables. - private lateinit var adConsentDatabaseHelper: AdConsentDatabaseHelper - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - // Use a builder to create the alert dialog. - val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog) - - // Set the icon according to the theme. - dialogBuilder.setIconAttribute(R.attr.blockAdsBlueIcon) - - // Initialize the bookmarks database helper. - adConsentDatabaseHelper = AdConsentDatabaseHelper(requireContext()) - - // Set the title. - dialogBuilder.setTitle(R.string.ad_consent) - - // Set the text. - dialogBuilder.setMessage(R.string.ad_consent_text) - - // Set the close browser button. - dialogBuilder.setNegativeButton(R.string.close_browser) { _: DialogInterface?, _: Int -> - // Update the ad consent database. - adConsentDatabaseHelper.updateAdConsent(false) - - // Close the browser. `finishAndRemoveTask` also removes Privacy Browser from the recent app list. - if (Build.VERSION.SDK_INT >= 21) { - requireActivity().finishAndRemoveTask() - } else { - requireActivity().finish() - } - - // Remove the terminated program from RAM. The status code is `0`. - exitProcess(0) - } - - // Set the accept ads button. - dialogBuilder.setPositiveButton(R.string.accept_ads) { _: DialogInterface?, _: Int -> - // Update the ad consent database. - adConsentDatabaseHelper.updateAdConsent(true) - - // Load an ad. - AdHelper.loadAd(requireActivity().findViewById(R.id.adview), requireContext(), requireActivity(), getString(R.string.ad_unit_id)) - } - - // Create an alert dialog from the alert dialog builder. - val alertDialog = dialogBuilder.create() - - // Get a handle for the shared preferences. - val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) - - // 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 - } - - // Close Privacy Browser Free if the dialog is cancelled without selecting a button (by tapping on the background). - override fun onCancel(dialogInterface: DialogInterface) { - // Update the ad consent database. - adConsentDatabaseHelper.updateAdConsent(false) - - // Close the browser. `finishAndRemoveTask()` also removes Privacy Browser from the recent app list. - if (Build.VERSION.SDK_INT >= 21) { - requireActivity().finishAndRemoveTask() - } else { - requireActivity().finish() - } - - // Remove the terminated program from RAM. The status code is `0`. - exitProcess(0) - } -} \ No newline at end of file diff --git a/app/src/free/java/com/stoutner/privacybrowser/helpers/AdConsentDatabaseHelper.kt b/app/src/free/java/com/stoutner/privacybrowser/helpers/AdConsentDatabaseHelper.kt deleted file mode 100644 index 8499d553..00000000 --- a/app/src/free/java/com/stoutner/privacybrowser/helpers/AdConsentDatabaseHelper.kt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2018,2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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 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. If not, see . - */ - -package com.stoutner.privacybrowser.helpers - -import android.content.ContentValues -import android.content.Context -import android.database.sqlite.SQLiteDatabase -import android.database.sqlite.SQLiteOpenHelper - -// Define the class constants. -private const val SCHEMA_VERSION = 1 -private const val AD_CONSENT_DATABASE = "ad_consent.db" -private const val AD_CONSENT_TABLE = "ad_consent" -private const val ID = "_id" -private const val AD_CONSENT = "ad_consent" -private const val CREATE_AD_CONSENT_TABLE = "CREATE TABLE $AD_CONSENT_TABLE ($ID INTEGER PRIMARY KEY, $AD_CONSENT BOOLEAN)" - -class AdConsentDatabaseHelper (context: Context) : SQLiteOpenHelper(context, AD_CONSENT_DATABASE, null, SCHEMA_VERSION) { - override fun onCreate(adConsentDatabase: SQLiteDatabase) { - // Create the ad consent table. - adConsentDatabase.execSQL(CREATE_AD_CONSENT_TABLE) - - // Create an ad consent content values. - val adConsentContentValues = ContentValues() - - // Populate the ad consent content values with the default data. - adConsentContentValues.put(AD_CONSENT, false) - - // Insert a new row. The second argument is `null`, which makes it so that a completely null row cannot be created. - adConsentDatabase.insert(AD_CONSENT_TABLE, null, adConsentContentValues) - } - - override fun onUpgrade(adConsentDatabase: SQLiteDatabase, oldVersion: Int, newVersion: Int) { - // Code for upgrading the database will be added here if the schema version ever increases above 1. - } - - // Check to see if ad consent has been granted. - val isGranted: Boolean get() { - // Get a readable database handle. - val adConsentDatabase = this.readableDatabase - - // Get the ad consent cursor. - val adConsentCursor = adConsentDatabase.rawQuery("SELECT * FROM $AD_CONSENT_TABLE", null) - - // Move the cursor to the first entry. - adConsentCursor.moveToFirst() - - // Get the ad consent boolean. - val adConsent = adConsentCursor.getInt(adConsentCursor.getColumnIndex(AD_CONSENT)) == 1 - - // Close the cursor. - adConsentCursor.close() - - // Close the database. - adConsentDatabase.close() - - // Return the ad consent boolean. - return adConsent - } - - // Update the ad consent. - fun updateAdConsent(adConsent: Boolean) { - // Get a writable database handle. - val adConsentDatabase = this.writableDatabase - - // Set the ad consent integer according to the boolean. - val adConsentInt = if (adConsent) 1 else 0 - - // Update the ad consent in the database. - adConsentDatabase.execSQL("UPDATE $AD_CONSENT_TABLE SET $AD_CONSENT = $adConsentInt") - - // Close the database. - adConsentDatabase.close() - } -} \ No newline at end of file diff --git a/app/src/free/java/com/stoutner/privacybrowser/helpers/AdHelper.kt b/app/src/free/java/com/stoutner/privacybrowser/helpers/AdHelper.kt deleted file mode 100644 index 84c1b492..00000000 --- a/app/src/free/java/com/stoutner/privacybrowser/helpers/AdHelper.kt +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright © 2016-2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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 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. If not, see . - */ - -package com.stoutner.privacybrowser.helpers - -import android.app.Activity -import android.content.Context -import android.os.Bundle -import android.util.DisplayMetrics -import android.view.View -import android.widget.RelativeLayout - -import androidx.fragment.app.FragmentManager - -import com.google.ads.mediation.admob.AdMobAdapter -import com.google.android.gms.ads.AdRequest -import com.google.android.gms.ads.AdSize -import com.google.android.gms.ads.AdView -import com.google.android.gms.ads.MobileAds - -import com.stoutner.privacybrowser.R -import com.stoutner.privacybrowser.dialogs.AdConsentDialog - -object AdHelper { - // Define the class variables. - private var initialized = false - - // The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. - @JvmStatic - fun initializeAds(view: View, context: Context, activity: Activity, fragmentManager: FragmentManager, adUnitId: String) { - // Check to see if the ads have been initialized. - if (!initialized) { // This is the first run; the ads have not yet been initialized. - // Initialize mobile ads. - MobileAds.initialize(context) - - // Initialize the bookmarks database helper. - val adConsentDatabaseHelper = AdConsentDatabaseHelper(context) - - // Check to see if consent has been granted. - val adConsentGranted = adConsentDatabaseHelper.isGranted - - // Display the ad consent dialog if needed. - if (!adConsentGranted) { // Ad consent has not been granted. - // Instantiate the ad consent dialog. - val adConsentDialogFragment = AdConsentDialog() - - // Display the ad consent dialog. - adConsentDialogFragment.show(fragmentManager,"Ad Consent") - } else { // Ad consent has already been granted. - // Load an ad. - loadAd(view, context, activity, adUnitId) - } - - // Set the initialized variable to true so this section doesn't run again. - initialized = true - } else { // Ads have previously been initialized. - // Load an ad. - loadAd(view, context, activity, adUnitId) - } - } - - // The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. - @JvmStatic - fun loadAd(view: View, context: Context, activity: Activity, adUnitId: String) { - // Cast the generic view to an AdView. - var adView = view as AdView - - // Save the layout parameters. They are used when programatically recreating the ad below. - val adViewLayoutParameters = adView.layoutParams as RelativeLayout.LayoutParams - - // Get a handle for the ad view parent. - val adViewParentLayout = adView.parent as RelativeLayout - - // Remove the AdView. - adViewParentLayout.removeView(adView) - - // Create a new AdView. This is necessary because the size can change when the device is rotated. - adView = AdView(context) - - // Set the ad unit ID. - adView.adUnitId = adUnitId - - // Set the view ID. - adView.id = R.id.adview - - // Set the layout parameters. - adView.layoutParams = adViewLayoutParameters - - // Add the new ad view to the parent layout. - adViewParentLayout.addView(adView) - - // Get a handle for the display. Once the minimum API >= 30, this should be changed to `context.getDisplay()`. - @Suppress("DEPRECATION") val display = activity.windowManager.defaultDisplay - - // Initialize a display metrics. - val displayMetrics = DisplayMetrics() - - // Get the display metrics from the display. Once the minimum APO >= 30, this should be replaced with `WindowMetrics.getBounds()` and `Configuration.densityDpi`. - @Suppress("DEPRECATION") - display.getMetrics(displayMetrics) - - // Get the width pixels and the density. - val widthPixels = displayMetrics.widthPixels.toFloat() - val density = displayMetrics.density - - // Calculate the ad width. - val adWidth = (widthPixels / density).toInt() - - // Get the ad size. - val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(context, adWidth) - - // Set the ad size on the adView. - adView.adSize = adSize - - // Create an ad settings bundle. - val adSettingsBundle = Bundle() - - // Only request non-personalized ads. - adSettingsBundle.putString("npa", "1") - - // Build the ad request. - val adRequest = AdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter::class.java, adSettingsBundle).build() - - // Make it so. - adView.loadAd(adRequest) - } - - // The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. - // This method exists here for the sake of consistency with the following two methods. - @JvmStatic - fun hideAd(view: View) { - // Cast the generic view to an AdView. - val adView = view as AdView - - // Hide the ad. - adView.visibility = View.GONE - } - - // The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. - // This method exists here so that the main WebView activity doesn't need to import `com.google.android.gms.ads.AdView`. - @JvmStatic - fun pauseAd(view: View) { - // Cast The generic view to an AdView. - val adView = view as AdView - - // Pause the AdView. - adView.pause() - } - - // The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. - // This method exists here so that the main WebView activity doesn't need to import `com.google.android.gms.ads.AdView`. - @JvmStatic - fun resumeAd(view: View) { - // Cast the generic view to an AdView. - val adView = view as AdView - - // Resume the AdView. - adView.resume() - } -} \ No newline at end of file diff --git a/app/src/free/res/drawable/privacy_browser_foreground.xml b/app/src/free/res/drawable/privacy_browser_foreground.xml deleted file mode 100644 index cb1baa1d..00000000 --- a/app/src/free/res/drawable/privacy_browser_foreground.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/free/res/layout/adview_bottom_appbar.xml b/app/src/free/res/layout/adview_bottom_appbar.xml deleted file mode 100644 index bd037ad3..00000000 --- a/app/src/free/res/layout/adview_bottom_appbar.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/free/res/layout/adview_top_appbar.xml b/app/src/free/res/layout/adview_top_appbar.xml deleted file mode 100644 index f0e48252..00000000 --- a/app/src/free/res/layout/adview_top_appbar.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/free/res/mipmap-hdpi/privacy_browser.png b/app/src/free/res/mipmap-hdpi/privacy_browser.png deleted file mode 100644 index 9e97de72..00000000 Binary files a/app/src/free/res/mipmap-hdpi/privacy_browser.png and /dev/null differ diff --git a/app/src/free/res/mipmap-hdpi/privacy_browser_round.png b/app/src/free/res/mipmap-hdpi/privacy_browser_round.png deleted file mode 100644 index 8b9a78e6..00000000 Binary files a/app/src/free/res/mipmap-hdpi/privacy_browser_round.png and /dev/null differ diff --git a/app/src/free/res/mipmap-mdpi/privacy_browser.png b/app/src/free/res/mipmap-mdpi/privacy_browser.png deleted file mode 100644 index 7f44c76d..00000000 Binary files a/app/src/free/res/mipmap-mdpi/privacy_browser.png and /dev/null differ diff --git a/app/src/free/res/mipmap-mdpi/privacy_browser_round.png b/app/src/free/res/mipmap-mdpi/privacy_browser_round.png deleted file mode 100644 index b708a71f..00000000 Binary files a/app/src/free/res/mipmap-mdpi/privacy_browser_round.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xhdpi/privacy_browser.png b/app/src/free/res/mipmap-xhdpi/privacy_browser.png deleted file mode 100644 index e088e126..00000000 Binary files a/app/src/free/res/mipmap-xhdpi/privacy_browser.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xhdpi/privacy_browser_round.png b/app/src/free/res/mipmap-xhdpi/privacy_browser_round.png deleted file mode 100644 index 98e1d6b8..00000000 Binary files a/app/src/free/res/mipmap-xhdpi/privacy_browser_round.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xxhdpi/privacy_browser.png b/app/src/free/res/mipmap-xxhdpi/privacy_browser.png deleted file mode 100644 index 0ed53bc0..00000000 Binary files a/app/src/free/res/mipmap-xxhdpi/privacy_browser.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xxhdpi/privacy_browser_round.png b/app/src/free/res/mipmap-xxhdpi/privacy_browser_round.png deleted file mode 100644 index caaefecc..00000000 Binary files a/app/src/free/res/mipmap-xxhdpi/privacy_browser_round.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xxxhdpi/privacy_browser.png b/app/src/free/res/mipmap-xxxhdpi/privacy_browser.png deleted file mode 100644 index 37c6258e..00000000 Binary files a/app/src/free/res/mipmap-xxxhdpi/privacy_browser.png and /dev/null differ diff --git a/app/src/free/res/mipmap-xxxhdpi/privacy_browser_round.png b/app/src/free/res/mipmap-xxxhdpi/privacy_browser_round.png deleted file mode 100644 index ccfd19a6..00000000 Binary files a/app/src/free/res/mipmap-xxxhdpi/privacy_browser_round.png and /dev/null differ diff --git a/app/src/free/res/values-de/strings.xml b/app/src/free/res/values-de/strings.xml deleted file mode 100644 index f4bf046d..00000000 --- a/app/src/free/res/values-de/strings.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - Privacy Browser Free - - - Mit Privacy Browser Free öffnen. - - - Privacy Browser Free zeigt Werbung im unteren Teil des Displays. Diese wird von Google aus einem Pool an häufig verwendeten Anbietern ausgewählt und ist nicht personalisiert. - \n\nDie Standard-Version von Privacy Browser enthält diese Werbebanner nicht. - Browser schließen - Werbung zustimmen - \ No newline at end of file diff --git a/app/src/free/res/values-es/strings.xml b/app/src/free/res/values-es/strings.xml deleted file mode 100644 index c8d3b319..00000000 --- a/app/src/free/res/values-es/strings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - Navegador Privado Gratuito - - - Abrir con Navegador Privado Gratuito. - - - 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 de aplicaciones. - Cerrar el navegador - Aceptar anuncios - \ No newline at end of file diff --git a/app/src/free/res/values-fr/strings.xml b/app/src/free/res/values-fr/strings.xml deleted file mode 100644 index d1175ff4..00000000 --- a/app/src/free/res/values-fr/strings.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - Privacy Browser Free - - - Ouvrir avec Privacy Browser Free. - - - Privacy Browser Free affiche une bannière publicitaire en bas de l\'écran. - Ces annonces proviennent des fournisseurs de Google couramment utilisés et sont configurées pour être non personnalisées. - \n\nLa version standard de Privacy Browser ne contient pas d\'annonces d\'applications. - Fermer le navigateur - Accepter les annonces - \ No newline at end of file diff --git a/app/src/free/res/values-it/strings.xml b/app/src/free/res/values-it/strings.xml deleted file mode 100644 index d0050d3c..00000000 --- a/app/src/free/res/values-it/strings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - Privacy Browser Free - - - Apri con Privacy Browser Free. - - - 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 di applicazioni. - Chiudi il Browser - Accetta gli Annunci - \ No newline at end of file diff --git a/app/src/free/res/values-pt-rBR/strings.xml b/app/src/free/res/values-pt-rBR/strings.xml deleted file mode 100644 index 63aaceb8..00000000 --- a/app/src/free/res/values-pt-rBR/strings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - Privacy Browser Gratuito - - - Abrir com Privacy Browser Gratuito. - - - Privacy Browser Gratuito exibe um anúncio de banner na parte inferior da tela. - Esses anúncios vêm do conjunto de provedores comumente usados do Google e são configurados para não serem personalizados. - \n\nA versão padrão do Privacy Browser não contém anúncios de aplicativos. - Fechar Navegador - Aceitar Anúncios - \ No newline at end of file diff --git a/app/src/free/res/values-ru/strings.xml b/app/src/free/res/values-ru/strings.xml deleted file mode 100644 index 48dbc07c..00000000 --- a/app/src/free/res/values-ru/strings.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - Privacy Browser Free - - - Открыть в Privacy Browser Free. - - - Privacy Browser Free отображает рекламный баннер в нижней части экрана. - Эта реклама поступает от Google и настроена так, чтобы исключить персонализацию. - \n\nСтандартная версия Privacy Browser не содержит рекламы приложений. - Закрыть браузер - Разрешить рекламу - \ No newline at end of file diff --git a/app/src/free/res/values-tr/strings.xml b/app/src/free/res/values-tr/strings.xml deleted file mode 100644 index d4164853..00000000 --- a/app/src/free/res/values-tr/strings.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - Privacy Browser Ücretsiz - - - Privacy Browser Ücretsiz ile aç. - - - Privacy Browser Ücretsiz ekranın altında bir banner reklam gösterir. - Bu reklamlar, Google\'ın sık kullanılan sağlayıcılarından gelmektedir ve kişiselleştirilmeyecek şekilde yapılandırılmıştır. - \n\nPrivacy Browser standart versiyonu uygulama reklamları içermez. - Tarayıcıyı kapat - Reklamları kabul et - \ No newline at end of file diff --git a/app/src/free/res/values/strings.xml b/app/src/free/res/values/strings.xml deleted file mode 100644 index 4cbb628c..00000000 --- a/app/src/free/res/values/strings.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - com.stoutner.privacybrowser.fileprovider.free - - - Privacy Browser Free - - - Open with Privacy Browser Free. - - - Privacy Browser Free displays a banner ad on the bottom of the screen. - These ads come from Google’s set of commonly used providers and are configured to be non-personalized. - \n\nThe standard version of Privacy Browser does not contain app ads. - Close Browser - Accept Ads - - - ca-app-pub-5962503714887045~2738552414 - ca-app-pub-5962503714887045/2738552414 - - - \ No newline at end of file diff --git a/app/src/main/assets/de/about_changelog.html b/app/src/main/assets/de/about_changelog.html index dcaf4fff..f7673d2d 100644 --- a/app/src/main/assets/de/about_changelog.html +++ b/app/src/main/assets/de/about_changelog.html @@ -33,8 +33,8 @@ -

3.9 (version code 57)

-

27. November 2021 - Mindest-API 19, Ziel-API 31

+

3.9 (version code 57)

+

27. November 2021 - Mindest-API 19, Ziel-API 31

  • Simplify the save dialogs.
  • Display the saved file name in the save snackbars.
  • diff --git a/app/src/main/assets/de/about_licenses.html b/app/src/main/assets/de/about_licenses.html index cee06063..ef57d64f 100644 --- a/app/src/main/assets/de/about_licenses.html +++ b/app/src/main/assets/de/about_licenses.html @@ -66,9 +66,9 @@ Die geänderte Datei wird unter der GPLv3+-Lizenz veröffentlicht.

    Icons:

    -

    - are derived from security and language, - which are part of the Android Material icon set and are released under the Apache License 2.0. +

    + are derived from security and language, which are part of the Android Material icon set and are released under the + Apache License 2.0. The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

    is derived from elements of folder and exit_to_app, diff --git a/app/src/main/assets/en/about_changelog.html b/app/src/main/assets/en/about_changelog.html index 05b16d4b..871c317a 100644 --- a/app/src/main/assets/en/about_changelog.html +++ b/app/src/main/assets/en/about_changelog.html @@ -27,8 +27,8 @@ -

    3.9 (version code 57)

    -

    27 November 2021 - minimum API 19, target API 31

    +

    3.9 (version code 57)

    +

    27 November 2021 - minimum API 19, target API 31

    • Simplify the save dialogs.
    • Display the saved file name in the save snackbars.
    • diff --git a/app/src/main/assets/en/about_licenses.html b/app/src/main/assets/en/about_licenses.html index 7b604061..1f9f2d93 100644 --- a/app/src/main/assets/en/about_licenses.html +++ b/app/src/main/assets/en/about_licenses.html @@ -63,9 +63,9 @@ The modified file is released under the GPLv3+ license.

      Icons

      -

      - are derived from security and language, - which are part of the Android Material icon set and are released under the Apache License 2.0. +

      + are derived from security and language, which are part of the Android Material icon set and are released under the + Apache License 2.0. The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

      is derived from elements of folder and exit_to_app, diff --git a/app/src/main/assets/es/about_changelog.html b/app/src/main/assets/es/about_changelog.html index b1820522..926ca202 100644 --- a/app/src/main/assets/es/about_changelog.html +++ b/app/src/main/assets/es/about_changelog.html @@ -29,8 +29,8 @@ -

      3.9 (código de versión 57)

      -

      27 de noviembre de 2021 - API mínimo 19, API objetivo 30

      +

      3.9 (código de versión 57)

      +

      27 de noviembre de 2021 - API mínimo 19, API objetivo 30

      • Simplificar los diálogos de guardado.
      • Mostrar el nombre del archivo guardado en las barras de herramientas de guardado.
      • diff --git a/app/src/main/assets/es/about_licenses.html b/app/src/main/assets/es/about_licenses.html index b0d9e30c..443248fe 100644 --- a/app/src/main/assets/es/about_licenses.html +++ b/app/src/main/assets/es/about_licenses.html @@ -65,10 +65,9 @@ El archivo modificado se libera bajo la licencia GPLv3+.

        Iconos

        -

        - derivan de security y de language, - que son parte del conjunto de iconos Android Material - y son liberados bajo la Licencia Apache 2.0. +

        + derivan de security y de language, que son parte del conjunto de iconos Android Material y son liberados bajo la + Licencia Apache 2.0. El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2016 Soren Stoutner. Las imágenes resultantes se liberan bajo la licencia GPLv3+.

        deriva de elementos de folder y exit_to_app, que son parte del diff --git a/app/src/main/assets/fr/about_changelog.html b/app/src/main/assets/fr/about_changelog.html index 58191639..3dc88131 100644 --- a/app/src/main/assets/fr/about_changelog.html +++ b/app/src/main/assets/fr/about_changelog.html @@ -29,8 +29,8 @@ -

        3.9 (version du code 57)

        -

        27 Novembre 2021 - API minimale : 19, API optimale : 31

        +

        3.9 (version du code 57)

        +

        27 Novembre 2021 - API minimale : 19, API optimale : 31

        • Simplifcation des fenêtres de sauvegarde.
        • Affichage du nom du fichier sauvegardé dans les écrans d'enregistrement.
        • diff --git a/app/src/main/assets/fr/about_licenses.html b/app/src/main/assets/fr/about_licenses.html index 15ec5a08..e5dc9405 100644 --- a/app/src/main/assets/fr/about_licenses.html +++ b/app/src/main/assets/fr/about_licenses.html @@ -65,10 +65,9 @@ Le fichier modifié est publié sous la licence GPLv3+.

          Icônes

          -

          - sont dérivés de security et de language, - qui font partie de l'ensemble d'icônes Matériel Android - et sont publiés sous la Licence Apache 2.0. +

          sont dérivés de + security et de language, qui font partie de l'ensemble d'icônes Matériel Android et sont publiés sous la + Licence Apache 2.0. Le texte complet de la licence est ci-dessous. Modifications copyright © 2016 Soren Stoutner. Les images résultantes sont publiées sous la licence GPLv3+.

          est dérivé des éléments folder et exit_to_app, diff --git a/app/src/main/assets/it/about_changelog.html b/app/src/main/assets/it/about_changelog.html index 066d14ab..16ebc1c6 100644 --- a/app/src/main/assets/it/about_changelog.html +++ b/app/src/main/assets/it/about_changelog.html @@ -29,8 +29,8 @@ -

          3.9 (versione codice 57)

          -

          27 Novembre 2021 - minima API 19, target API 31

          +

          3.9 (versione codice 57)

          +

          27 Novembre 2021 - minima API 19, target API 31

          • Semplificazione delle finestre di salvataggio.
          • Visualizzazione del nome del file salvato nelle snackbar di salvataggio.
          • diff --git a/app/src/main/assets/it/about_licenses.html b/app/src/main/assets/it/about_licenses.html index bcf2d143..6e7ba5ca 100644 --- a/app/src/main/assets/it/about_licenses.html +++ b/app/src/main/assets/it/about_licenses.html @@ -68,9 +68,9 @@ Il file modificato è rilasciato sotto la Licenza GPLv3+.

            Icone

            -

            - sono state derivate da security e language, che fanno parte - dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0. +

            + sono state derivate da security e language, che fanno parte dell'Android Material icon set e sono state rilasciate sotto + Licenza Apache 2.0. Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche © 2016 Soren Stoutner. Le immagini risultanti sono rilasciate sotto Licenza GPLv3+.

            è stata derivata da elementi di folder e di exit_to_app, che fanno parte diff --git a/app/src/main/assets/pt-rBR/about_changelog.html b/app/src/main/assets/pt-rBR/about_changelog.html index 08a9cc18..e6c78f35 100644 --- a/app/src/main/assets/pt-rBR/about_changelog.html +++ b/app/src/main/assets/pt-rBR/about_changelog.html @@ -29,8 +29,8 @@ -

            3.9 (código da versão 57)

            -

            27 November 2021 - minimum API 19, target API 31

            +

            3.9 (código da versão 57)

            +

            27 November 2021 - minimum API 19, target API 31

            • Simplify the save dialogs.
            • Display the saved file name in the save snackbars.
            • diff --git a/app/src/main/assets/pt-rBR/about_licenses.html b/app/src/main/assets/pt-rBR/about_licenses.html index 49e15957..d3f1f586 100644 --- a/app/src/main/assets/pt-rBR/about_licenses.html +++ b/app/src/main/assets/pt-rBR/about_licenses.html @@ -65,9 +65,9 @@ The modified file is released under the GPLv3+ license.

              Icons

              -

              - are derived from security and language, - which are part of the Android Material icon set and are released under the Apache License 2.0. +

              + are derived from security and language, which are part of the Android Material icon set and are released under the + Apache License 2.0. The full text of the license is below. Modifications copyright © 2016 Soren Stoutner. The resulting images are released under the GPLv3+ license.

              is derived from elements of folder and exit_to_app, diff --git a/app/src/main/assets/ru/about_changelog.html b/app/src/main/assets/ru/about_changelog.html index 012d745a..573eda6a 100644 --- a/app/src/main/assets/ru/about_changelog.html +++ b/app/src/main/assets/ru/about_changelog.html @@ -27,8 +27,8 @@ -

              3.9 (код версии 57)

              -

              27 Ноябрь 2021 года - минимальный API 19, целевой API 31

              +

              3.9 (код версии 57)

              +

              27 Ноябрь 2021 года - минимальный API 19, целевой API 31

              • Упрощены диалоги сохранения.
              • Имя сохраняемого файла теперь отображается в окне панели сохранения.
              • diff --git a/app/src/main/assets/ru/about_licenses.html b/app/src/main/assets/ru/about_licenses.html index 8d1acbf4..982930a8 100644 --- a/app/src/main/assets/ru/about_licenses.html +++ b/app/src/main/assets/ru/about_licenses.html @@ -63,9 +63,9 @@ Модифицированный файл выпущен под лицензией GPLv3+.

                Иконки

                -

                - являются производными от security и language, которые являются частью - Android Material icon set и выпущены под Apache License 2.0. Полный текст лицензии приведен ниже. +

                + являются производными от security и language, которые являются частью Android Material icon set и выпущены под + Apache License 2.0. Полный текст лицензии приведен ниже. Модификации авторских прав © 2016 Soren Stoutner. Полученные изображения выпущены под лицензией GPLv3+.

                являются производными от folder и exit_to_app, которые являются частью diff --git a/app/src/main/assets/shared_images/privacy_browser_free.svg b/app/src/main/assets/shared_images/privacy_browser_free.svg deleted file mode 100644 index 053c668d..00000000 --- a/app/src/main/assets/shared_images/privacy_browser_free.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/tr/about_changelog.html b/app/src/main/assets/tr/about_changelog.html index d9d7bed5..02046354 100644 --- a/app/src/main/assets/tr/about_changelog.html +++ b/app/src/main/assets/tr/about_changelog.html @@ -27,8 +27,8 @@ -

                3.9 (version code 57)

                -

                27 November 2021 - minimum API 19, target API 31

                +

                3.9 (version code 57)

                +

                27 November 2021 - minimum API 19, target API 31

                • Simplify the save dialogs.
                • Display the saved file name in the save snackbars.
                • diff --git a/app/src/main/assets/tr/about_licenses.html b/app/src/main/assets/tr/about_licenses.html index fde177f0..225dfa6c 100644 --- a/app/src/main/assets/tr/about_licenses.html +++ b/app/src/main/assets/tr/about_licenses.html @@ -64,8 +64,8 @@ Değiştirilen dosya GPLv3+ lisansı altında yayınlandı.

                  Simgeler

                  -

                  - Apache License 2.0 altında yayınlanan ve +

                  + Apache License 2.0 altında yayınlanan ve Android Material simge setinin bir parçası olan security ve language'den elde edilmiştir. Lisansın tüm metni aşağıdadır. Değişikliklerin telif hakkı © 2016 Soren Stoutner. Ortaya çıkan görüntüler GPLv3+ lisansı altında yayınlandı.

                  diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java index 0fd45161..00a64e20 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -123,7 +123,6 @@ import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.tabs.TabLayout; -import com.stoutner.privacybrowser.BuildConfig; import com.stoutner.privacybrowser.R; import com.stoutner.privacybrowser.adapters.WebViewPagerAdapter; import com.stoutner.privacybrowser.asynctasks.GetHostIpAddresses; @@ -132,7 +131,6 @@ import com.stoutner.privacybrowser.asynctasks.PrepareSaveDialog; import com.stoutner.privacybrowser.asynctasks.SaveUrl; import com.stoutner.privacybrowser.asynctasks.SaveWebpageImage; import com.stoutner.privacybrowser.dataclasses.PendingDialog; -import com.stoutner.privacybrowser.dialogs.AdConsentDialog; import com.stoutner.privacybrowser.dialogs.CreateBookmarkDialog; import com.stoutner.privacybrowser.dialogs.CreateBookmarkFolderDialog; import com.stoutner.privacybrowser.dialogs.CreateHomeScreenShortcutDialog; @@ -148,7 +146,6 @@ 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.AdHelper; import com.stoutner.privacybrowser.helpers.BlocklistHelper; import com.stoutner.privacybrowser.helpers.BookmarksDatabaseHelper; import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper; @@ -316,7 +313,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Declare the class views. private FrameLayout rootFrameLayout; private DrawerLayout drawerLayout; - private RelativeLayout mainContentRelativeLayout; + private CoordinatorLayout coordinatorLayout; private AppBarLayout appBarLayout; private Toolbar toolbar; private RelativeLayout urlRelativeLayout; @@ -561,7 +558,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Get handles for the views. rootFrameLayout = findViewById(R.id.root_framelayout); drawerLayout = findViewById(R.id.drawerlayout); - mainContentRelativeLayout = findViewById(R.id.main_content_relativelayout); + coordinatorLayout = findViewById(R.id.coordinatorlayout); appBarLayout = findViewById(R.id.appbar_layout); toolbar = findViewById(R.id.toolbar); findOnPageLinearLayout = findViewById(R.id.find_on_page_linearlayout); @@ -804,7 +801,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook applyProxy(false); } - // Reapply any system UI flags and the ad in the free flavor. + // Reapply any system UI flags. if (displayingFullScreenVideo || inFullScreenBrowsingMode) { // The system is displaying a website or a video in full screen mode. /* Hide the system bars. * SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen. @@ -814,12 +811,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook */ rootFrameLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - } else if (BuildConfig.FLAVOR.contentEquals("free")) { // The system in not in full screen mode. - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Resume the ad. - AdHelper.resumeAd(adView); } // Show any pending dialogs. @@ -862,15 +853,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook if (currentWebView != null) { currentWebView.pauseTimers(); } - - // Pause the ad or it will continue to consume resources in the background on the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Pause the ad. - AdHelper.pauseAd(adView); - } } @Override @@ -951,9 +933,10 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Store a handle for the options menu so it can be used by `onOptionsItemSelected()` and `updatePrivacyIcons()`. optionsMenu = menu; - // Get handles for the class menu items. + // Get handles for the menu items. optionsPrivacyMenuItem = menu.findItem(R.id.javascript); optionsRefreshMenuItem = menu.findItem(R.id.refresh); + MenuItem bookmarksMenuItem = menu.findItem(R.id.bookmarks); optionsCookiesMenuItem = menu.findItem(R.id.cookies); optionsDomStorageMenuItem = menu.findItem(R.id.dom_storage); optionsSaveFormDataMenuItem = menu.findItem(R.id.save_form_data); // Form data can be removed once the minimum API >= 26. @@ -995,10 +978,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook optionsFontSizeMenuItem = menu.findItem(R.id.font_size); optionsAddOrEditDomainMenuItem = menu.findItem(R.id.add_or_edit_domain); - // Get handles for the method menu items. - MenuItem bookmarksMenuItem = menu.findItem(R.id.bookmarks); - MenuItem adConsentMenuItem = menu.findItem(R.id.ad_consent); - // Set the initial status of the privacy icons. `false` does not call `invalidateOptionsMenu` as the last step. updatePrivacyIcons(false); @@ -1012,9 +991,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Only display the dark WebView menu item if API >= 21. optionsDarkWebViewMenuItem.setVisible(Build.VERSION.SDK_INT >= 21); - // Only show Ad Consent if this is the free flavor. - adConsentMenuItem.setVisible(BuildConfig.FLAVOR.contentEquals("free")); - // Get the shared preferences. SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); @@ -2028,15 +2004,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook startActivity(domainsIntent); } - // Consume the event. - return true; - } else if (menuItemId == R.id.ad_consent) { // Ad consent. - // Instantiate the ad consent dialog. - DialogFragment adConsentDialogFragment = new AdConsentDialog(); - - // Display the ad consent dialog. - adConsentDialogFragment.show(getSupportFragmentManager(), getString(R.string.ad_consent)); - // Consume the event. return true; } else { // There is no match with the options menu. Pass the event up to the parent method. @@ -2256,26 +2223,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook actionBarDrawerToggle.syncState(); } - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - // Run the default commands. - super.onConfigurationChanged(newConfig); - - // Reload the ad for the free flavor if not in full screen mode. - if (BuildConfig.FLAVOR.contentEquals("free") && !inFullScreenBrowsingMode) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Reload the ad. The AdView is destroyed and recreated, which changes the ID, every time it is reloaded to handle possible rotations. - // `getContext()` can be used instead of `getActivity.getApplicationContext()` once the minimum API >= 23. - AdHelper.loadAd(adView, getApplicationContext(), this, getString(R.string.ad_unit_id)); - } - - // `invalidateOptionsMenu` should recalculate the number of action buttons from the menu to display on the app bar, but it doesn't because of the this bug: - // https://code.google.com/p/android/issues/detail?id=20493#c8 - // ActivityCompat.invalidateOptionsMenu(this); - } - @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { // Get the hit test result. @@ -3688,15 +3635,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook actionBar.show(); } - // Hide the banner ad in the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Hide the banner ad. - AdHelper.hideAd(adView); - } - /* Hide the system bars. * SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen. * SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN makes the root frame layout fill the area that is normally reserved for the status bar. @@ -3715,16 +3653,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Show the action bar. actionBar.show(); - // Show the banner ad in the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Initialize the ads. If this isn't the first run, `loadAd()` will be automatically called instead. - // `getContext()` can be used instead of `getActivity.getApplicationContext()` once the minimum API >= 23. - AdHelper.initializeAds(adView, getApplicationContext(), this, getSupportFragmentManager(), getString(R.string.ad_unit_id)); - } - // Remove the `SYSTEM_UI` flags from the root frame layout. rootFrameLayout.setSystemUiVisibility(0); } @@ -4817,8 +4745,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Enable the sliding drawers. drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); - // Show the main content relative layout. - mainContentRelativeLayout.setVisibility(View.VISIBLE); + // Show the coordinator layout. + coordinatorLayout.setVisibility(View.VISIBLE); // Apply the appropriate full screen mode flags. if (fullScreenBrowsingModeEnabled && inFullScreenBrowsingMode) { // Privacy Browser is currently in full screen browsing mode. @@ -4831,15 +4759,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook actionBar.hide(); } - // Hide the banner ad in the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Hide the banner ad. - AdHelper.hideAd(adView); - } - /* Hide the system bars. * SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen. * SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN makes the root frame layout fill the area that is normally reserved for the status bar. @@ -4852,15 +4771,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Remove the `SYSTEM_UI` flags from the root frame layout. rootFrameLayout.setSystemUiVisibility(0); } - - // Reload the ad for the free flavor if not in full screen mode. - if (BuildConfig.FLAVOR.contentEquals("free") && !inFullScreenBrowsingMode) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Reload the ad. - AdHelper.loadAd(adView, this, this, getString(R.string.ad_unit_id)); - } } private void clearAndExit() { @@ -5289,15 +5199,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } } - // Hide the banner ad in the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Hide the banner ad. - AdHelper.hideAd(adView); - } - /* Hide the system bars. * SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen. * SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN makes the root frame layout fill the area that is normally reserved for the status bar. @@ -5334,15 +5235,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } } - // Show the banner ad in the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // Reload the ad. `getContext()` can be used instead of `getActivity.getApplicationContext()` once the minimum API >= 23. - AdHelper.loadAd(adView, getApplicationContext(), activity, getString(R.string.ad_unit_id)); - } - // Remove the `SYSTEM_UI` flags from the root frame layout. rootFrameLayout.setSystemUiVisibility(0); } @@ -5581,20 +5473,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Set the full screen video flag. displayingFullScreenVideo = true; - // Pause the ad if this is the free flavor. - if (BuildConfig.FLAVOR.contentEquals("free")) { - // Get a handle for the ad view. This cannot be a class variable because it changes with each ad load. - View adView = findViewById(R.id.adview); - - // The AdView is destroyed and recreated, which changes the ID, every time it is reloaded to handle possible rotations. - AdHelper.pauseAd(adView); - } - // Hide the keyboard. inputMethodManager.hideSoftInputFromWindow(nestedScrollWebView.getWindowToken(), 0); - // Hide the main content relative layout. - mainContentRelativeLayout.setVisibility(View.GONE); + // Hide the coordinator layout. + coordinatorLayout.setVisibility(View.GONE); /* Hide the system bars. * SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen. diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.kt index 0a0932fb..bbbc9d12 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.kt @@ -42,9 +42,9 @@ import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import androidx.fragment.app.DialogFragment +import androidx.multidex.BuildConfig import androidx.preference.PreferenceManager -import com.stoutner.privacybrowser.BuildConfig import com.stoutner.privacybrowser.R import java.io.ByteArrayOutputStream diff --git a/app/src/main/res/drawable/privacy_browser_foreground.xml b/app/src/main/res/drawable/privacy_browser_foreground.xml index 0ee38afb..27aaba1b 100644 --- a/app/src/main/res/drawable/privacy_browser_foreground.xml +++ b/app/src/main/res/drawable/privacy_browser_foreground.xml @@ -1,5 +1,6 @@ + Modifications copyright © 2016-2017,2021 Soren Stoutner . The resulting image is released under the GPLv3+ license. --> + - + + android:fillColor="#0d4781" /> - + + android:fillColor="#1976d2" /> - + + android:fillColor="#ffffff" /> diff --git a/app/src/main/res/layout/main_framelayout_bottom_appbar.xml b/app/src/main/res/layout/main_framelayout_bottom_appbar.xml index 98e16b67..e78bcc30 100644 --- a/app/src/main/res/layout/main_framelayout_bottom_appbar.xml +++ b/app/src/main/res/layout/main_framelayout_bottom_appbar.xml @@ -31,175 +31,166 @@ android:layout_height="match_parent" android:layout_width="match_parent" > - - + - - - + android:layout_width="match_parent" + android:layout_below="@id/adview" + android:focusable="true" + android:focusableInTouchMode="true" > + + + + + - - + + - - + + android:theme="@style/PrivacyBrowserAppBar" + android:layout_alignParentBottom="true" > - + + - + - + android:layout_width="wrap_content" + android:layout_gravity="center_vertical" + android:paddingStart="10dp" + android:paddingEnd="10dp" + android:src="@drawable/close_day" + android:background="?attr/selectableItemBackground" + android:onClick="closeTab" + android:contentDescription="@string/close_tab" + app:tint="?attr/addTabIconTintColor" /> + + - - + + + + + + android:orientation="horizontal" + android:visibility="gone" > - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + + - - - - + android:layout_width="wrap_content" + android:layout_marginStart="4dp" + android:layout_marginEnd="4dp" + android:text="@string/zero_of_zero" /> + + + + + + + + + + + + + + + + - - + - - - - - - + + + + android:theme="@style/PrivacyBrowserAppBar" > - - + + android:visibility="gone" + app:layout_scrollFlags="scroll|enterAlways|snap" /> - - + + - - + - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + android:layout_marginStart="4dp" + android:layout_marginEnd="4dp" + android:text="@string/zero_of_zero" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/privacy_browser.xml b/app/src/main/res/mipmap-anydpi-v26/privacy_browser.xml index 22f1a1c9..e96461bd 100644 --- a/app/src/main/res/mipmap-anydpi-v26/privacy_browser.xml +++ b/app/src/main/res/mipmap-anydpi-v26/privacy_browser.xml @@ -19,6 +19,6 @@ along with Privacy Browser. If not, see . --> - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/privacy_browser_round.xml b/app/src/main/res/mipmap-anydpi-v26/privacy_browser_round.xml index 22f1a1c9..e96461bd 100644 --- a/app/src/main/res/mipmap-anydpi-v26/privacy_browser_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/privacy_browser_round.xml @@ -19,6 +19,6 @@ along with Privacy Browser. If not, see . --> - - + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1914cb14..5bf453a7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -513,14 +513,14 @@ WebView default user agent Mozilla/5.0 (Android 12; Mobile; rv:94.0) Gecko/94.0 Firefox/94.0 Mozilla/5.0 (Linux; Android 12; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36 - Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1 + Mozilla/5.0 (iPhone; CPU iPhone OS 15_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Mobile/15E148 Safari/604.1 Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34 Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15 + Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15 Custom user agent Custom user agent diff --git a/app/src/standard/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt b/app/src/standard/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt deleted file mode 100644 index 03a2765b..00000000 --- a/app/src/standard/java/com/stoutner/privacybrowser/dialogs/AdConsentDialog.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright © 2018-2019,2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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 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. If not, see . - */ - -package com.stoutner.privacybrowser.dialogs - -import androidx.fragment.app.DialogFragment - -class AdConsentDialog : DialogFragment() { - // Do nothing because this is the standard flavor. -} \ No newline at end of file diff --git a/app/src/standard/java/com/stoutner/privacybrowser/helpers/AdHelper.kt b/app/src/standard/java/com/stoutner/privacybrowser/helpers/AdHelper.kt deleted file mode 100644 index 50d1db27..00000000 --- a/app/src/standard/java/com/stoutner/privacybrowser/helpers/AdHelper.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright © 2016-2018,2020-2021 Soren Stoutner . - * - * This file is part of Privacy Browser . - * - * Privacy Browser 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 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. If not, see . - */ - -package com.stoutner.privacybrowser.helpers - -import android.app.Activity -import android.content.Context -import android.view.View - -import androidx.fragment.app.FragmentManager - -// The `@JvmStatic` notation can be removed once all the code has migrated to Kotlin. -@Suppress("UNUSED_PARAMETER") -object AdHelper { - @JvmStatic - fun initializeAds(view: View, context: Context, activity: Activity, fragmentManager: FragmentManager, adUnitId: String) { - // Do nothing because this is the standard flavor. - } - - @JvmStatic - fun loadAd(view: View, context: Context, activity: Activity, adUnitId: String) { - // Do nothing because this is the standard flavor. - } - - @JvmStatic - fun hideAd(view: View) { - // Do nothing because this is the standard flavor. - } - - @JvmStatic - fun pauseAd(view: View) { - // Do nothing because this is the standard flavor. - } - - @JvmStatic - fun resumeAd(view: View) { - // Do nothing because this is the standard flavor. - } -} \ No newline at end of file