defaultConfig {
minSdkVersion 19
targetSdkVersion 28
- versionCode 41
- versionName "2.17"
+ versionCode 42
+ versionName "2.17.1"
}
buildTypes {
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
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;
// `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;
}
// 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);
}
// 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);
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);
// 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);
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);
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);
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);
}
// 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);
}
// 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);
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++) {
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) {
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.
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.
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
--- /dev/null
+• 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
--- /dev/null
+• 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
--- /dev/null
+• 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
--- /dev/null
+• 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
--- /dev/null
+• Исправлен сбой, к которому приводило сохранение закладок с очень большими значками сайтов.
+• Разрешено перемещение Privacy Browser на SD-карту.
\ No newline at end of file
--- /dev/null
+• 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