defaultConfig {
minSdkVersion 19
targetSdkVersion 28
- versionCode 38
- versionName "2.15"
+ versionCode 39
+ versionName "2.15.1"
}
buildTypes {
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27. Dezember 2018 - Mindest-API 19, Ziel-API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24. Dezember 2018</a> - Mindest-API 19, Ziel-API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27. Dezember 2018 - Mindest-API 19, Ziel-API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24. Dezember 2018</a> - Mindest-API 19, Ziel-API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27 December 2018 - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27 December 2018 - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (código de versión 39)</h3>
+ <p>27 de diciembre de 2018 - API mínimo 19, API dirigido 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (código de versión 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (código de versión 39)</h3>
+ <p>27 de diciembre de 2018 - API mínimo 19, API dirigido 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (código de versión 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (versione codice 39)</h3>
+ <p>27 Dicembre 2018 - minima API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (versione codice 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 Dicembre 2018</a> - minima API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (versione codice 39)</h3>
+ <p>27 Dicembre 2018 - minima API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (versione codice 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 Dicembre 2018</a> - minima API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (код версии 39)</h3>
+ <p>27 декабря 2018 года - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (код версии 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 декабря 2018 года</a> - minimum API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (код версии 39)</h3>
+ <p>27 декабря 2018 года - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (код версии 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 декабря 2018 года</a> - minimum API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27 December 2018 - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
<ul>
</head>
<body>
+ <h3>2.15.1 (version code 39)</h3>
+ <p>27 December 2018 - minimum API 19, target API 28</p>
+ <ul>
+ <li>Fix a bug that caused <a href="https://redmine.stoutner.com/issues/364">some devices to crash</a> when opening a secondary activity.</li>
+ </ul>
+
<h3>2.15 (version code 38)</h3>
<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 December 2018</a> - minimum API 19, target API 28</p>
<ul>
private ForegroundColorSpan initialGrayColorSpan;
private ForegroundColorSpan finalGrayColorSpan;
+ // The drawer header padding variables are used in `onCreate()` and `onConfigurationChanged()`.
+ private int drawerHeaderPaddingLeftAndRight;
+ private int drawerHeaderPaddingTop;
+ private int drawerHeaderPaddingBottom;
+
// `sslErrorHandler` is used in `onCreate()`, `onSslErrorCancel()`, and `onSslErrorProceed`.
private SslErrorHandler sslErrorHandler;
float screenDensity = resources.getDisplayMetrics().density;
// Calculate the drawer header padding. This is used to move the text in the drawer headers below any cutouts.
- int drawerHeaderPaddingLeftAndRight = (int) (15 * screenDensity);
- int drawerHeaderPaddingTop = statusBarPixelSize + (int) (4 * screenDensity);
- int drawerHeaderPaddingBottom = (int) (8 * screenDensity);
+ drawerHeaderPaddingLeftAndRight = (int) (15 * screenDensity);
+ drawerHeaderPaddingTop = statusBarPixelSize + (int) (4 * screenDensity);
+ drawerHeaderPaddingBottom = (int) (8 * screenDensity);
- // The drawer listener is used to update the navigation menu.
+ // The drawer listener is used to update the navigation menu.`
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- // Reload the ad for the free flavor if we not in full screen mode.
+ // Get the status bar pixel size.
+ int statusBarResourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
+ int statusBarPixelSize = getResources().getDimensionPixelSize(statusBarResourceId);
+
+ // Get the resource density.
+ float screenDensity = getResources().getDisplayMetrics().density;
+
+ // Recalculate the drawer header padding.
+ drawerHeaderPaddingLeftAndRight = (int) (15 * screenDensity);
+ drawerHeaderPaddingTop = statusBarPixelSize + (int) (4 * screenDensity);
+ drawerHeaderPaddingBottom = (int) (8 * screenDensity);
+
+ // Reload the ad for the free flavor if not in full screen mode.
if (BuildConfig.FLAVOR.contentEquals("free") && !inFullScreenBrowsingMode) {
// Reload the ad. The AdView is destroyed and recreated, which changes the ID, every time it is reloaded to handle possible rotations.
AdHelper.loadAd(findViewById(R.id.adview), getApplicationContext(), getString(R.string.ad_unit_id));
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file
--- /dev/null
+• Fix a bug that caused some devices to crash when opening a secondary activity.
\ No newline at end of file