<!-- The theme has to be defined here or an ugly title bar is displayed when the app launches.
`android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes, which preserves scroll location in the WebView.
+ `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
`android:launchMode="singleTask"` makes the app launch in a new task instead of inside the task of the program that sends it an intent.
It also makes it reuse an existing Privacy Browser activity if available instead of launching a new one.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:name=".activities.MainWebViewActivity"
android:label="@string/privacy_browser"
android:theme="@style/PrivacyBrowserLight"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:launchMode="singleTask"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.BookmarksActivity"
android:label="@string/bookmarks"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.BookmarksDatabaseViewActivity"
android:label="@string/bookmarks_database_view"
android:parentActivityName=".activities.BookmarksActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.RequestsActivity"
android:label="@string/requests"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:windowSoftInputMode="stateAlwaysHidden"` keeps the keyboard from displaying when the screen is rotated and after the `AddDomainDialog` is dismissed.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ <!-- `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+ `android:windowSoftInputMode="stateAlwaysHidden"` keeps the keyboard from displaying when the screen is rotated and after the `AddDomainDialog` is dismissed.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.DomainsActivity"
android:label="@string/domains"
android:parentActivityName=".activities.MainWebViewActivity"
+ android:configChanges="keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:windowSoftInputMode="stateAlwaysHidden"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.SettingsActivity"
android:label="@string/settings"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.ImportExportActivity"
android:label="@string/import_export"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.LogcatActivity"
android:label="@string/logcat"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.GuideActivity"
android:label="@string/guide"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.AboutActivity"
android:label="@string/about_privacy_browser"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
<!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
- `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
- `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+ `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+ `android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
+ `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
<activity
android:name=".activities.ViewSourceActivity"
android:label="@string/view_source"
android:parentActivityName=".activities.MainWebViewActivity"
- android:configChanges="orientation|screenSize"
+ android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
</application>
-</manifest>
+</manifest>
\ No newline at end of file
// Get a handle for the navigation requests menu item. The menu is 0 based.
MenuItem navigationRequestsMenuItem = navigationMenu.getItem(6);
- // Get handles for the options menu items.
- MenuItem blocklistsMenuItem = optionsMenu.findItem(R.id.blocklists);
- MenuItem easyListMenuItem = optionsMenu.findItem(R.id.easylist);
- MenuItem easyPrivacyMenuItem = optionsMenu.findItem(R.id.easyprivacy);
- MenuItem fanboysAnnoyanceListMenuItem = optionsMenu.findItem(R.id.fanboys_annoyance_list);
- MenuItem fanboysSocialBlockingListMenuItem = optionsMenu.findItem(R.id.fanboys_social_blocking_list);
- MenuItem ultraPrivacyMenuItem = optionsMenu.findItem(R.id.ultraprivacy);
- MenuItem blockAllThirdPartyRequestsMenuItem = optionsMenu.findItem(R.id.block_all_third_party_requests);
-
// Create an empty web resource response to be used if the resource request is blocked.
WebResourceResponse emptyWebResourceResponse = new WebResourceResponse("text/plain", "utf8", new ByteArrayInputStream("".getBytes()));
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blockAllThirdPartyRequestsMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.THIRD_PARTY_REQUESTS) + " - " +
- getString(R.string.block_all_third_party_requests));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.block_all_third_party_requests).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.THIRD_PARTY_REQUESTS) + " - " +
+ getString(R.string.block_all_third_party_requests));
+ }
});
}
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- ultraPrivacyMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.ULTRA_PRIVACY) + " - " + getString(R.string.ultraprivacy));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.ultraprivacy).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.ULTRA_PRIVACY) + " - " + getString(R.string.ultraprivacy));
+ }
});
}
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- easyListMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.EASY_LIST) + " - " + getString(R.string.easylist));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.easylist).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.EASY_LIST) + " - " + getString(R.string.easylist));
+ }
});
}
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- easyPrivacyMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.EASY_PRIVACY) + " - " + getString(R.string.easyprivacy));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.easyprivacy).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.EASY_PRIVACY) + " - " + getString(R.string.easyprivacy));
+ }
});
}
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- fanboysAnnoyanceListMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.FANBOYS_ANNOYANCE_LIST) + " - " +
- getString(R.string.fanboys_annoyance_list));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.fanboys_annoyance_list).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.FANBOYS_ANNOYANCE_LIST) + " - " +
+ getString(R.string.fanboys_annoyance_list));
+ }
});
}
activity.runOnUiThread(() -> {
// Update the menu item titles.
navigationRequestsMenuItem.setTitle(getString(R.string.requests) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- blocklistsMenuItem.setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
- fanboysSocialBlockingListMenuItem.setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.FANBOYS_SOCIAL_BLOCKING_LIST) + " - " +
- getString(R.string.fanboys_social_blocking_list));
+
+ // Update the options menu if it has been populated.
+ if (optionsMenu != null) {
+ optionsMenu.findItem(R.id.blocklists).setTitle(getString(R.string.blocklists) + " - " + nestedScrollWebView.getRequestsCount(NestedScrollWebView.BLOCKED_REQUESTS));
+ optionsMenu.findItem(R.id.fanboys_social_blocking_list).setTitle(nestedScrollWebView.getRequestsCount(NestedScrollWebView.FANBOYS_SOCIAL_BLOCKING_LIST) + " - " +
+ getString(R.string.fanboys_social_blocking_list));
+ }
});
}