]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/AndroidManifest.xml
Release 3.4.1.
[PrivacyBrowserAndroid.git] / app / src / main / AndroidManifest.xml
index 8f306a22f0ac99ab9321157b0ab6d597138d2ff8..dedd5b1a17f8d14bbe6166ce4ccd6dd2c11669f7 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2015-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
 
@@ -42,7 +42,8 @@
     <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
 
 
-    <!-- For API >= 23, app data is automatically backed up to Google cloud servers unless `android:allowBackup="false"` and `android:fullBackupContent="false"` is set. -->
+    <!-- For API >= 23, app data is automatically backed up to Google cloud servers unless `android:allowBackup="false"` and `android:fullBackupContent="false"` is set.
+        `android:requestLegacyExternalStorage="true"` makes Android 10 storage permissions work like previous versions of Android.  It is a temporary workaround.  <https://redmine.stoutner.com/issues/546> -->
     <application
         android:label="@string/privacy_browser"
         android:icon="@mipmap/privacy_browser"
@@ -51,6 +52,7 @@
         android:fullBackupContent="false"
         android:supportsRtl="true"
         android:networkSecurityConfig="@xml/network_security_config"
+        android:requestLegacyExternalStorage="true"
         tools:ignore="UnusedAttribute" >
 
         <!-- If `android:name="android.webkit.WebView.MetricsOptOut"` is not `true` then `WebViews` will upload metrics to Google.  <https://developer.android.com/reference/android/webkit/WebView.html> -->
                 android:resource="@xml/file_provider_paths" />
         </provider>
         
-        <!-- 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.
-             `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
+        <!-- The label uses the short name so that it isn't truncated under the icon in the launcher on most phones.
+            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 restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.
+            `tools:ignore="unusedAttribute"` removes the lint warning that `persistableMode` does not apply to API < 21. -->
         <activity
             android:name=".activities.MainWebViewActivity"
-            android:label="@string/privacy_browser"
+            android:label="@string/short_name"
             android:theme="@style/PrivacyBrowserLight"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|keyboard|keyboardHidden"
             android:launchMode="singleTask"
             android:screenOrientation="fullUser"
             android:persistableMode="persistNever"
                 <data android:mimeType="text/*" />
             </intent-filter>
 
+            <!-- Process intents for MHT archives. -->
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.BROWSABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+
+                <data android:scheme="file" />
+                <data android:scheme="content" />
+
+                <data android:host="*" />
+
+                <!-- This pattern matches any file that starts with a `/`, has at least one character, followed by any number of other characters, terminating with `.mht`. -->
+                <data android:pathPattern="/.*\.mht" />
+                <data android:mimeType="*/*" />
+            </intent-filter>
+
             <!-- Process web search intents. -->
             <intent-filter>
                 <action android:name="android.intent.action.WEB_SEARCH" />
         </activity>
 
 
-        <!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
-            `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|keyboard|keyboardHidden"
             android:screenOrientation="fullUser"
             android:persistableMode="persistNever"
             tools:ignore="UnusedAttribute" />
 
-        <!-- `android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
+        <!-- `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `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. -->
             android:name=".activities.DomainsActivity"
             android:label="@string/domains"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="keyboard|keyboardHidden"
+            android:configChanges="screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.SettingsActivity"
             android:label="@string/settings"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.ImportExportActivity"
             android:label="@string/import_export"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.LogcatActivity"
             android:label="@string/logcat"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.GuideActivity"
             android:label="@string/guide"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.AboutActivity"
             android:label="@string/about_privacy_browser"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|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:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
+        <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+            `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+            `android:configChanges="keyboard|keyboardHidden"` makes the activity not restart 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.ViewSourceActivity"
             android:label="@string/view_source"
             android:parentActivityName=".activities.MainWebViewActivity"
-            android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
+            android:configChanges="orientation|screenSize|screenLayout|keyboard|keyboardHidden"
             android:screenOrientation="fullUser"
             android:persistableMode="persistNever"
             tools:ignore="UnusedAttribute" />