diff options
Diffstat (limited to 'java/AndroidManifest.xml.in')
-rw-r--r-- | java/AndroidManifest.xml.in | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/java/AndroidManifest.xml.in b/java/AndroidManifest.xml.in new file mode 100644 index 00000000000..563914fb02c --- /dev/null +++ b/java/AndroidManifest.xml.in @@ -0,0 +1,335 @@ +<!-- @configure_input@ + +Copyright (C) 2023-2024 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. --> + +<!-- targetSandboxVersion must be 1. Otherwise, fascist security + restrictions prevent Emacs from making HTTP connections. --> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.gnu.emacs" + android:targetSandboxVersion="1" + android:installLocation="auto" + android:requestLegacyExternalStorage="true" + @ANDROID_SHARED_USER_ID@ + @ANDROID_SHARED_USER_NAME@ + android:versionCode="@emacs_major_version@" + android:versionName="@version@"> + + <!-- Paste in every permission in existence so Emacs can do + anything. --> + + <uses-permission android:name="android.permission.READ_CONTACTS" /> + <uses-permission android:name="android.permission.WRITE_CONTACTS" /> + <uses-permission android:name="android.permission.VIBRATE" /> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.SET_WALLPAPER" /> + <uses-permission android:name="android.permission.READ_CALENDAR" /> + <uses-permission android:name="android.permission.WRITE_CALENDAR" /> + <!-- Despite the claim that WRITE_EXTERNAL_STORAGE also covers + reading from external storage, specifying READ_EXTERNAL_STORAGE + seems to still be necessary on some versions of Android. + (bug#64445) --> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.SEND_SMS" /> + <uses-permission android:name="android.permission.RECEIVE_SMS" /> + <uses-permission android:name="android.permission.RECEIVE_MMS"/> + <uses-permission android:name="android.permission.WRITE_SMS"/> + <uses-permission android:name="android.permission.READ_SMS"/> + <uses-permission android:name="android.permission.NFC" /> + <uses-permission android:name="android.permission.TRANSMIT_IR" /> + <uses-permission android:name="android.permission.READ_PHONE_STATE"/> + <uses-permission android:name="android.permission.WAKE_LOCK"/> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> + <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> + <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/> + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> + <uses-permission android:name="android.permission.RECORD_AUDIO" /> + <uses-permission android:name="android.permission.CAMERA" /> + + <uses-permission android:name="android.permission.ACCEPT_HANDOVER" /> + <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> + <uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS" /> + <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> + <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" /> + <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> + <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> + <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> + <uses-permission android:name="android.permission.BODY_SENSORS" /> + <uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" /> + <uses-permission android:name="android.permission.CALL_PHONE" /> + <uses-permission android:name="android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD" /> + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> + <uses-permission android:name="android.permission.INSTANT_APP_FOREGROUND_SERVICE" /> + <uses-permission android:name="android.permission.INTERACT_ACROSS_PROFILES" /> + <uses-permission android:name="android.permission.LOADER_USAGE_STATS" /> + <uses-permission android:name="android.permission.MANAGE_IPSEC_TUNNELS" /> + <uses-permission android:name="android.permission.MANAGE_MEDIA" /> + <uses-permission android:name="android.permission.MANAGE_ONGOING_CALLS" /> + <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" /> + <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" /> + <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> + <uses-permission android:name="android.permission.READ_CALL_LOG" /> + <uses-permission android:name="android.permission.READ_CELL_BROADCASTS" /> + <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> + <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> + <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> + <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" /> + <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> + <uses-permission android:name="android.permission.READ_SMS" /> + <uses-permission android:name="android.permission.RECEIVE_MMS" /> + <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /> + <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> + <uses-permission android:name="android.permission.SMS_FINANCIAL_TRANSACTIONS" /> + <uses-permission android:name="android.permission.TURN_SCREEN_ON" /> + <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" /> + <uses-permission android:name="android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER" /> + <uses-permission android:name="android.permission.USE_SIP" /> + <uses-permission android:name="android.permission.UWB_RANGING" /> + <uses-permission android:name="android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS" /> + <uses-permission android:name="android.permission.WRITE_CALL_LOG" /> + <uses-permission android:name="android.permission.WRITE_SETTINGS" /> + + <uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" /> + <uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" /> + <uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" /> + <uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" /> + <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> + <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> + <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> + <uses-permission android:name="android.permission.BLUETOOTH" /> + <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> + <uses-permission android:name="android.permission.BROADCAST_STICKY" /> + <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> + <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> + <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> + <uses-permission android:name="android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS" /> + <uses-permission android:name="android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS" /> + <uses-permission android:name="android.permission.CREDENTIAL_MANAGER_SET_ORIGIN" /> + <uses-permission android:name="android.permission.DELIVER_COMPANION_MESSAGES" /> + <uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" /> + <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> + <uses-permission android:name="android.permission.ENFORCE_UPDATE_OWNERSHIP" /> + <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> + <uses-permission android:name="android.permission.FLASHLIGHT" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" /> + <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /> + <uses-permission android:name="android.permission.GET_TASKS" /> + <uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS" /> + <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" /> + <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> + <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> + <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" /> + <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> + <uses-permission android:name="android.permission.NFC_PREFERRED_PAYMENT_INFO" /> + <uses-permission android:name="android.permission.NFC_TRANSACTION_EVENT" /> + <uses-permission android:name="android.permission.PERSISTENT_ACTIVITY" /> + <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> + <uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE" /> + <uses-permission android:name="android.permission.READ_INSTALL_SESSIONS" /> + <uses-permission android:name="android.permission.READ_NEARBY_STREAMING_POLICY" /> + <uses-permission android:name="android.permission.READ_PROFILE" /> + <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" /> + <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.READ_SYNC_STATS" /> + <uses-permission android:name="android.permission.READ_USER_DICTIONARY" /> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> + <uses-permission android:name="android.permission.REORDER_TASKS" /> + <uses-permission android:name="android.permission.REQUEST_COMPANION_PROFILE_GLASSES" /> + <uses-permission android:name="android.permission.REQUEST_COMPANION_PROFILE_WATCH" /> + <uses-permission android:name="android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND" /> + <uses-permission android:name="android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND" /> + <uses-permission android:name="android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND" /> + <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> + <uses-permission android:name="android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE" /> + <uses-permission android:name="android.permission.REQUEST_PASSWORD_COMPLEXITY" /> + <uses-permission android:name="android.permission.RESTART_PACKAGES" /> + <uses-permission android:name="android.permission.RUN_USER_INITIATED_JOBS" /> + <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" /> + <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" /> + <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" /> + <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" /> + <uses-permission android:name="android.permission.USE_BIOMETRIC" /> + <uses-permission android:name="android.permission.USE_CREDENTIALS" /> + <uses-permission android:name="android.permission.USE_EXACT_ALARM" /> + <uses-permission android:name="android.permission.USE_FINGERPRINT" /> + <uses-permission android:name="android.permission.WRITE_PROFILE" /> + <uses-permission android:name="android.permission.WRITE_SMS" /> + <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM" /> + <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" /> + + <!-- This is required on Android 11 or later to access /sdcard. --> + + <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/> + + <!-- And under Android 13 or later to post desktop + notifications. --> + + <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> + + <!-- Under Android 14 or later to run within the background. --> + + <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/> + + <uses-sdk android:minSdkVersion="@ANDROID_MIN_SDK@" + android:targetSdkVersion="34"/> + + <application android:name="org.gnu.emacs.EmacsApplication" + android:label="Emacs" + android:icon="@mipmap/emacs_icon" + android:hardwareAccelerated="true" + android:supportsRtl="true" + android:theme="@style/EmacsStyle" + android:debuggable="@ANDROID_DEBUGGABLE@" + android:allowBackup="true" + android:extractNativeLibs="true"> + + <activity android:name="org.gnu.emacs.EmacsActivity" + android:launchMode="singleInstance" + android:taskAffinity="emacs.primary_frame" + android:windowSoftInputMode="adjustResize" + android:exported="true" + android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|locale|fontScale"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <activity android:name="org.gnu.emacs.EmacsOpenActivity" + android:taskAffinity="emacs.open_dialog" + android:excludeFromRecents="true" + android:exported="true"> + + <!-- Allow Emacs to open all kinds of files known to Android. --> + + <intent-filter> + <action android:name="android.intent.action.VIEW"/> + <action android:name="android.intent.action.EDIT"/> + <action android:name="android.intent.action.PICK"/> + <category android:name="android.intent.category.DEFAULT"/> + <!-- Don't offer to start Emacs for URLs that designate + resources other than files. --> + <data android:mimeType="*/*" android:scheme="file"/> + <data android:mimeType="*/*" android:scheme="content"/> + </intent-filter> + + <!-- Facilitate opening org-protocol:// URLs as well, the same + way emacsclient.desktop does. --> + + <intent-filter> + <action android:name="android.intent.action.VIEW"/> + <category android:name="android.intent.category.DEFAULT"/> + <category android:name="android.intent.category.BROWSABLE"/> + <data android:scheme="org-protocol"/> + </intent-filter> + + <!-- And also mailto links. --> + + <intent-filter> + <action android:name="android.intent.action.VIEW"/> + <category android:name="android.intent.category.DEFAULT"/> + <category android:name="android.intent.category.BROWSABLE"/> + <data android:scheme="mailto"/> + </intent-filter> + + <intent-filter> + <action android:name="android.intent.action.SENDTO"/> + <data android:scheme="mailto"/> + <category android:name="android.intent.category.DEFAULT"/> + </intent-filter> + </activity> + + <activity android:name="org.gnu.emacs.EmacsMultitaskActivity" + android:taskAffinity="emacs.secondary_frame" + android:windowSoftInputMode="adjustResize" + android:exported="true" + android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|locale|fontScale"/> + + <activity android:autoRemoveFromRecents="true" + android:label="Emacs options" + android:exported="true" + android:name=".EmacsPreferencesActivity"> + <intent-filter> + <action android:name="android.intent.action.APPLICATION_PREFERENCES" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + + <!-- Android 6 and earlier don't display ``application + preferences'' activities in Settings, so display the + preferences activity as a launcher icon instead. --> + + <activity android:autoRemoveFromRecents="true" + android:label="Emacs options" + android:enabled="@bool/isBeforeNougat" + android:exported="@bool/isBeforeNougat" + android:icon="@drawable/emacs_wrench" + android:name=".EmacsLauncherPreferencesActivity"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <provider android:name="org.gnu.emacs.EmacsDocumentsProvider" + android:authorities="org.gnu.emacs" + android:exported="true" + android:grantUriPermissions="true" + android:permission="android.permission.MANAGE_DOCUMENTS" + android:enabled="@bool/isAtLeastKitKat"> + <intent-filter> + <action + android:name="android.content.action.DOCUMENTS_PROVIDER"/> + </intent-filter> + </provider> + + <receiver android:name=".EmacsDesktopNotification$CancellationReceiver" + android:exported="false"> + <intent-filter> + <action android:name="org.gnu.emacs.DISMISSED" /> + </intent-filter> + </receiver> + + <service android:name="org.gnu.emacs.EmacsService" + android:directBootAware="false" + android:enabled="true" + android:exported="false" + android:foregroundServiceType="specialUse" + android:label="GNU Emacs service"/> + </application> +</manifest> |