Release 2.17.1. v2.17.1
authorSoren Stoutner <soren@stoutner.com>
Tue, 5 Mar 2019 20:35:08 +0000 (13:35 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 5 Mar 2019 20:35:08 +0000 (13:35 -0700)
22 files changed:
app/build.gradle
app/src/main/assets/de/about_changelog_dark.html
app/src/main/assets/de/about_changelog_light.html
app/src/main/assets/en/about_changelog_dark.html
app/src/main/assets/en/about_changelog_light.html
app/src/main/assets/es/about_changelog_dark.html
app/src/main/assets/es/about_changelog_light.html
app/src/main/assets/it/about_changelog_dark.html
app/src/main/assets/it/about_changelog_light.html
app/src/main/assets/ru/about_changelog_dark.html
app/src/main/assets/ru/about_changelog_light.html
app/src/main/assets/tr/about_changelog_dark.html
app/src/main/assets/tr/about_changelog_light.html
app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java
build.gradle
fastlane/metadata/android/de-DE/changelogs/42.txt [new file with mode: 0644]
fastlane/metadata/android/en-US/changelogs/42.txt [new file with mode: 0644]
fastlane/metadata/android/es-ES/changelogs/42.txt [new file with mode: 0644]
fastlane/metadata/android/it-IT/changelogs/42.txt [new file with mode: 0644]
fastlane/metadata/android/ru-RU/changelogs/42.txt [new file with mode: 0644]
fastlane/metadata/android/tr-TR/changelogs/42.txt [new file with mode: 0644]

index abf3891..52f4d9b 100644 (file)
@@ -26,8 +26,8 @@ android {
     defaultConfig {
         minSdkVersion 19
         targetSdkVersion 28
-        versionCode 41
-        versionName "2.17"
+        versionCode 42
+        versionName "2.17.1"
     }
 
     buildTypes {
index 8931c60..37958d6 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5. März 2019 - Mindest-API 19, Ziel-API 28</p>
+        <ul>
+            <li>Fix eines Bugs, der Privacy Browser bei Bookmarks von Seiten mit <a href="https://redmine.stoutner.com/issues/395">sehr grossen Fav-Icons</a> abstürzen liess.</li>
+            <li>Privacy Browser kann nun auch auf <a href="https://redmine.stoutner.com/issues/394">SD-Karten</a> verschoben werden.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27. Februar 2019</a> - Mindest-API 19, Ziel-API 28</p>
         <ul>
index bbb981a..2e84491 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5. März 2019 - Mindest-API 19, Ziel-API 28</p>
+        <ul>
+            <li>Fix eines Bugs, der Privacy Browser bei Bookmarks von Seiten mit <a href="https://redmine.stoutner.com/issues/395">sehr grossen Fav-Icons</a> abstürzen liess.</li>
+            <li>Privacy Browser kann nun auch auf <a href="https://redmine.stoutner.com/issues/394">SD-Karten</a> verschoben werden.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27. Februar 2019</a> - Mindest-API 19, Ziel-API 28</p>
         <ul>
index 66b1648..24ac142 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5 March 2019 - minimum API 19, target API 28</p>
+        <ul>
+            <li>Fix a crash caused by bookmarks with <a href="https://redmine.stoutner.com/issues/395">very large favorite icons</a>.</li>
+            <li>Allow moving Privacy Browser to an <a href="https://redmine.stoutner.com/issues/394">SD card</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 February 2019</a> - minimum API 19, target API 28</p>
         <ul>
index b83d5bd..a687679 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5 March 2019 - minimum API 19, target API 28</p>
+        <ul>
+            <li>Fix a crash caused by bookmarks with <a href="https://redmine.stoutner.com/issues/395">very large favorite icons</a>.</li>
+            <li>Allow moving Privacy Browser to an <a href="https://redmine.stoutner.com/issues/394">SD card</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 February 2019</a> - minimum API 19, target API 28</p>
         <ul>
index 134f496..5f80f32 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (código de versión 42)</h3>
+        <p>5 de marzo de 2019 - API mínimo 19, API dirigido 28</p>
+        <ul>
+            <li>Corregir un bloqueo causado por favoritos con <a href="https://redmine.stoutner.com/issues/395">iconos preferidos muy grandes</a>.</li>
+            <li>Permitir mover Navegador Privado a una <a href="https://redmine.stoutner.com/issues/394">tarjeta SD</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (código de versión 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 de febrero de 2019</a> - API mínimo 19, API dirigido 28</p>
         <ul>
index bd9bd85..cd1292b 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (código de versión 42)</h3>
+        <p>5 de marzo de 2019 - API mínimo 19, API dirigido 28</p>
+        <ul>
+            <li>Corregir un bloqueo causado por favoritos con <a href="https://redmine.stoutner.com/issues/395">iconos preferidos muy grandes</a>.</li>
+            <li>Permitir mover Navegador Privado a una <a href="https://redmine.stoutner.com/issues/394">tarjeta SD</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (código de versión 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 de febrero de 2019</a> - API mínimo 19, API dirigido 28</p>
         <ul>
index 41c4687..ca41ca7 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (versione codice 42)</h3>
+        <p>5 Marzo 2019 - minima API 19, target API 28</p>
+        <ul>
+            <li>Correzione di un baco causato da segnalibri con <a href="https://redmine.stoutner.com/issues/395">icona troppo grande</a>.</li>
+            <li>Introduzione della possibilità di spostare Privacy Browser su <a href="https://redmine.stoutner.com/issues/394">memoria SD</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (versione codice 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 Febbraio 2019</a> - minima API 19, target API 28</p>
         <ul>
index a01142b..d8bd4b1 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (versione codice 42)</h3>
+        <p>5 Marzo 2019 - minima API 19, target API 28</p>
+        <ul>
+            <li>Correzione di un baco causato da segnalibri con <a href="https://redmine.stoutner.com/issues/395">icona troppo grande</a>.</li>
+            <li>Introduzione della possibilità di spostare Privacy Browser su <a href="https://redmine.stoutner.com/issues/394">memoria SD</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (versione codice 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 Febbraio 2019</a> - minima API 19, target API 28</p>
         <ul>
index 7906510..bb109d3 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (код версии 42)</h3>
+        <p>5 марта 2019 года - minimum API 19, target API 28</p>
+        <ul>
+            <li>Исправлен сбой, к которому приводило сохранение закладок с <a href="https://redmine.stoutner.com/issues/395">очень большими значками сайтов</a>.</li>
+            <li>Разрешено перемещение Privacy Browser на <a href="https://redmine.stoutner.com/issues/394">SD-карту</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (код версии 41)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 февраля 2019</a> - minimum API 19, target API 28</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 февраля 2019 года</a> - minimum API 19, target API 28</p>
         <ul>
             <li>Добавлена возможность <a href="https://redmine.stoutner.com/issues/8">прокрутки панели приложения</a>.</li>
             <li>Добавлена возможность журналирования <a href="https://redmine.stoutner.com/issues/264">Logcat</a>.</li>
index 0e61807..18bf598 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (код версии 42)</h3>
+        <p>5 марта 2019 года - minimum API 19, target API 28</p>
+        <ul>
+            <li>Исправлен сбой, к которому приводило сохранение закладок с <a href="https://redmine.stoutner.com/issues/395">очень большими значками сайтов</a>.</li>
+            <li>Разрешено перемещение Privacy Browser на <a href="https://redmine.stoutner.com/issues/394">SD-карту</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (код версии 41)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 февраля 2019</a> - minimum API 19, target API 28</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 февраля 2019 года</a> - minimum API 19, target API 28</p>
         <ul>
             <li>Добавлена возможность <a href="https://redmine.stoutner.com/issues/8">прокрутки панели приложения</a>.</li>
             <li>Добавлена возможность журналирования <a href="https://redmine.stoutner.com/issues/264">Logcat</a>.</li>
index 2b0f7d0..c0661f3 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5 Mart 2019 - minimum API 19, target API 28</p>
+        <ul>
+            <li>Büyük simgelere sahip yer imlerinin sebep olduğu <a href="https://redmine.stoutner.com/issues/395">bir hata düzeltildi</a>.</li>
+            <li>Privacy Browser'ın SD karta taşınmasına <a href="https://redmine.stoutner.com/issues/394">izin verildi</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 Şubat 2019</a> - minimum API 19, target API 28</p>
         <ul>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-8-1/">2.8.1</a> (version code 31)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 Mart 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-1/">2.1</a> (version code 21)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li>Fix a <a href="https://redmine.stoutner.com/issues/110">crash on load</a> introduced in version 2.0.1 if the homepage is set to be blank.</li>
             <li>Fix a bug that <a href="https://redmine.stoutner.com/issues/112">prevented websites with a localhost domain from loading</a>.</li>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-0-1/">2.0.1</a> (version code 20)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li><a href="https://redmine.stoutner.com/issues/101">Only load domain settings when the domain changes</a>.</li>
             <li>Only apply domain settings to subdomains if <a href="https://redmine.stoutner.com/issues/99">*. is specified at the beginning of the domain name</a>.</li>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-0/">2.0</a> (version code 19)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li>Implement <a href="https://redmine.stoutner.com/issues/7">custom domain settings</a>.</li>
             <li>When proxying through Tor, <a href="https://redmine.stoutner.com/issues/90">wait until Orbot is ready</a> before attempting to load a page.</li>
         </ul>
 
         <h3>1.2 (version code 3)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a> - minimum API 15, target API 23</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 Mart 2016</a> - minimum API 15, target API 23</p>
         <ul>
             <li>Update launcher icon to make it bigger.</li>
             <li>Replace all toast messages with <a href="https://redmine.stoutner.com/issues/12">snackbars</a>.</li>
         </ul>
 
         <h3>1.1 (version code 2)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a> - minimum API 10, target API 23</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 Mart 2016</a> - minimum API 10, target API 23</p>
         <ul>
             <li>Separate the standard and the free flavors so that Privacy Browser builds correctly on F-Droid.</li>
         </ul>
index 4f79128..d44e5ee 100644 (file)
     </head>
 
     <body>
+        <h3>2.17.1 (version code 42)</h3>
+        <p>5 Mart 2019 - minimum API 19, target API 28</p>
+        <ul>
+            <li>Büyük simgelere sahip yer imlerinin sebep olduğu <a href="https://redmine.stoutner.com/issues/395">bir hata düzeltildi</a>.</li>
+            <li>Privacy Browser'ın SD karta taşınmasına <a href="https://redmine.stoutner.com/issues/394">izin verildi</a>.</li>
+        </ul>
+
         <h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (version code 41)</h3>
         <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 Şubat 2019</a> - minimum API 19, target API 28</p>
         <ul>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-8-1/">2.8.1</a> (version code 31)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 Mart 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-1/">2.1</a> (version code 21)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li>Fix a <a href="https://redmine.stoutner.com/issues/110">crash on load</a> introduced in version 2.0.1 if the homepage is set to be blank.</li>
             <li>Fix a bug that <a href="https://redmine.stoutner.com/issues/112">prevented websites with a localhost domain from loading</a>.</li>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-0-1/">2.0.1</a> (version code 20)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li><a href="https://redmine.stoutner.com/issues/101">Only load domain settings when the domain changes</a>.</li>
             <li>Only apply domain settings to subdomains if <a href="https://redmine.stoutner.com/issues/99">*. is specified at the beginning of the domain name</a>.</li>
         </ul>
 
         <h3><a href="https://www.stoutner.com/privacy-browser-2-0/">2.0</a> (version code 19)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 March 2017</a> - minimum API 19, target API 25</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 Mart 2017</a> - minimum API 19, target API 25</p>
         <ul>
             <li>Implement <a href="https://redmine.stoutner.com/issues/7">custom domain settings</a>.</li>
             <li>When proxying through Tor, <a href="https://redmine.stoutner.com/issues/90">wait until Orbot is ready</a> before attempting to load a page.</li>
         </ul>
 
         <h3>1.2 (version code 3)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a> - minimum API 15, target API 23</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 Mart 2016</a> - minimum API 15, target API 23</p>
         <ul>
             <li>Update launcher icon to make it bigger.</li>
             <li>Replace all toast messages with <a href="https://redmine.stoutner.com/issues/12">snackbars</a>.</li>
         </ul>
 
         <h3>1.1 (version code 2)</h3>
-        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a> - minimum API 10, target API 23</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 Mart 2016</a> - minimum API 10, target API 23</p>
         <ul>
             <li>Separate the standard and the free flavors so that Privacy Browser builds correctly on F-Droid.</li>
         </ul>
index d9ce010..360f858 100644 (file)
@@ -24,11 +24,14 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
+import android.database.CursorWindow;
+import android.database.sqlite.SQLiteCursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Typeface;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.SparseBooleanArray;
 import android.view.ActionMode;
@@ -90,7 +93,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
 
     // `bookmarksCursor` is used in `onCreate()`, `onCreateBookmark()`, `onCreateBookmarkFolder()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`, `onMoveToFolder()`, `deleteBookmarkFolderContents()`,
     // `loadFolder()`, and `onDestroy()`.
-    private Cursor bookmarksCursor;
+    // TODO This should be switched back to a `Cursor` after the release of 2.17.1.
+    private SQLiteCursor bookmarksCursor;
 
     // `bookmarksCursorAdapter` is used in `onCreate(), `onCreateBookmark()`, `onCreateBookmarkFolder()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`, `onMoveToFolder()`, and `onLoadFolder()`.
     private CursorAdapter bookmarksCursorAdapter;
@@ -334,7 +338,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                         }
 
                         // Update the bookmarks cursor with the current contents of the bookmarks database.
-                        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+                        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+                        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
                         // Update the `ListView`.
                         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -380,7 +385,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                         }
 
                         // Update the bookmarks cursor with the current contents of the bookmarks database.
-                        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+                        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+                        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
                         // Update the `ListView`.
                         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -441,7 +447,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                         selectedBookmarksPositionsSparseBooleanArray = bookmarksListView.getCheckedItemPositions().clone();
 
                         // Update the bookmarks cursor with the current contents of the bookmarks database except for the specified database IDs.
-                        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrderExcept(selectedBookmarksIdsLongArray, currentFolder);
+                        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+                        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrderExcept(selectedBookmarksIdsLongArray, currentFolder);
 
                         // Update the list view.
                         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -460,7 +467,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                                             // The user pushed the `Undo` button.
                                             case Snackbar.Callback.DISMISS_EVENT_ACTION:
                                                 // Update the bookmarks cursor with the current contents of the bookmarks database, including the "deleted" bookmarks.
-                                                bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+                                                // TODO Change this back to a `Cursor` after 2.17.1 is released.
+                                                bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
                                                 // Update the list view.
                                                 bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -673,7 +681,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         bookmarksDatabaseHelper.createBookmark(bookmarkNameString, bookmarkUrlString, currentFolder, newBookmarkDisplayOrder, favoriteIconByteArray);
 
         // Update the bookmarks cursor with the current contents of this folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
         // Update the `ListView`.
         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -734,7 +743,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         bookmarksDatabaseHelper.createFolder(folderNameString, currentFolder, folderIconByteArray);
 
         // Update the bookmarks cursor with the current contents of this folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
         // Update the `ListView`.
         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -783,7 +793,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         contextualActionMode.finish();
 
         // Update the bookmarks cursor with the contents of the current folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
         // Update the `ListView`.
         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -877,7 +888,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         }
 
         // Update the bookmarks cursor with the current contents of this folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
         // Update the `ListView`.
         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -922,7 +934,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         }
 
         // Update the bookmarks cursor with the current contents of this folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
 
         // Update the `ListView`.
         bookmarksCursorAdapter.changeCursor(bookmarksCursor);
@@ -936,7 +949,7 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         String folderName = bookmarksDatabaseHelper.getFolderName(databaseId);
 
         // Get the contents of the folder.
-        Cursor folderCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(folderName);
+        Cursor folderCursor = bookmarksDatabaseHelper.getBookmarkIDs(folderName);
 
         // Delete each of the bookmarks in the folder.
         for (int i = 0; i < folderCursor.getCount(); i++) {
@@ -1026,7 +1039,16 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
 
     private void loadFolder() {
         // Update bookmarks cursor with the contents of the bookmarks database for the current folder.
-        bookmarksCursor = bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+        // TODO Change this back to a `Cursor` after 2.17.1 is released.
+        bookmarksCursor = (SQLiteCursor) bookmarksDatabaseHelper.getBookmarksByDisplayOrder(currentFolder);
+
+        // TODO Remove after the release of 2.17.1.
+        if (Build.VERSION.SDK_INT >= 28) {
+            // Create a big cursor window.
+            CursorWindow bigCursorWindow = new CursorWindow("Big Cursor Window", 4194304);
+
+            bookmarksCursor.setWindow(bigCursorWindow);
+        }
 
         // Setup a `CursorAdapter`.  `this` specifies the `Context`.  `false` disables `autoRequery`.
         bookmarksCursorAdapter = new CursorAdapter(this, bookmarksCursor, false) {
index a2af645..984402e 100644 (file)
@@ -410,6 +410,22 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper {
         return bookmarksDatabase.rawQuery(GET_BOOKMARKS, null);
     }
 
+    // Get a cursor with just database ID of bookmarks and folders in the specified folder.  This is useful for deleting folders with bookmarks that have favorite icons too large to fit in a cursor.
+    public Cursor getBookmarkIDs(String folderName) {
+        // Get a readable database handle.
+        SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
+
+        // SQL escape the folder name.
+        folderName = DatabaseUtils.sqlEscapeString(folderName);
+
+        // Get everything in the bookmarks table with `folderName` as the `PARENT_FOLDER`.
+        String GET_BOOKMARKS = "SELECT " + _ID + " FROM " + BOOKMARKS_TABLE +
+                " WHERE " + PARENT_FOLDER + " = " + folderName;
+
+        // Return the result as a cursor.  The cursor cannot be closed because it is used in the parent activity.
+        return bookmarksDatabase.rawQuery(GET_BOOKMARKS, null);
+    }
+
     // Get a cursor for bookmarks and folders in the specified folder except for ta specific list of IDs.
     public Cursor getBookmarksExcept(long[] exceptIdLongArray, String folderName) {
         // Get a readable database handle.
@@ -477,7 +493,7 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper {
         SQLiteDatabase bookmarksDatabase = this.getReadableDatabase();
 
         // Prepare the SQL statement to determine if `databaseId` is a folder.
-        String CHECK_IF_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE +
+        String CHECK_IF_FOLDER = "SELECT " + IS_FOLDER + " FROM " + BOOKMARKS_TABLE +
                 " WHERE " + _ID + " = " + databaseId;
 
         // Populate the folder cursor.
index e3ecf87..b4b8049 100644 (file)
@@ -25,7 +25,7 @@ buildscript {
         google()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.1'
+        classpath 'com.android.tools.build:gradle:3.3.2'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/fastlane/metadata/android/de-DE/changelogs/42.txt b/fastlane/metadata/android/de-DE/changelogs/42.txt
new file mode 100644 (file)
index 0000000..64da941
--- /dev/null
@@ -0,0 +1,2 @@
+• Fix eines Bugs, der Privacy Browser bei Bookmarks von Seiten mit sehr grossen Fav-Icons abstürzen liess.
+• Privacy Browser kann nun auch auf SD-Karten verschoben werden.
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/42.txt b/fastlane/metadata/android/en-US/changelogs/42.txt
new file mode 100644 (file)
index 0000000..e544943
--- /dev/null
@@ -0,0 +1,2 @@
+• Fix a crash caused by bookmarks with very large favorite icons.
+• Allow moving Privacy Browser to an SD card.
\ No newline at end of file
diff --git a/fastlane/metadata/android/es-ES/changelogs/42.txt b/fastlane/metadata/android/es-ES/changelogs/42.txt
new file mode 100644 (file)
index 0000000..a73a6fb
--- /dev/null
@@ -0,0 +1,2 @@
+• Corregir un bloqueo causado por favoritos con iconos preferidos muy grandes.
+• Permitir mover Navegador Privado a una tarjeta SD.
\ No newline at end of file
diff --git a/fastlane/metadata/android/it-IT/changelogs/42.txt b/fastlane/metadata/android/it-IT/changelogs/42.txt
new file mode 100644 (file)
index 0000000..05cbde1
--- /dev/null
@@ -0,0 +1,2 @@
+• Correzione di un baco causato da segnalibri con icona troppo grande.
+• Introduzione della possibilità di spostare Privacy Browser su memoria SD.
\ No newline at end of file
diff --git a/fastlane/metadata/android/ru-RU/changelogs/42.txt b/fastlane/metadata/android/ru-RU/changelogs/42.txt
new file mode 100644 (file)
index 0000000..c8498ca
--- /dev/null
@@ -0,0 +1,2 @@
+• Исправлен сбой, к которому приводило сохранение закладок с очень большими значками сайтов.
+• Разрешено перемещение Privacy Browser на SD-карту.
\ No newline at end of file
diff --git a/fastlane/metadata/android/tr-TR/changelogs/42.txt b/fastlane/metadata/android/tr-TR/changelogs/42.txt
new file mode 100644 (file)
index 0000000..3eff837
--- /dev/null
@@ -0,0 +1,2 @@
+• Büyük simgelere sahip yer imlerinin sebep olduğu bir hata düzeltildi.
+• Privacy Browser'ın SD karta taşınmasına izin verildi.
\ No newline at end of file