Declare 124 new Android permissions

* doc/emacs/android.texi (Android Environment): Document new
permissions and delete recently introduced permissions from the
list for Android 5.1 and earlier.

* java/AndroidManifest.xml.in: Declare 124 new permissions to
enable invoking features they protect from code running inside
Emacs.
This commit is contained in:
Po Lu 2024-03-08 10:58:17 +08:00
parent 00f86833ac
commit e4d1739a29
2 changed files with 429 additions and 56 deletions

View file

@ -474,33 +474,200 @@ version of Android being used:
@itemize @bullet
@item
Under more or less recent releases of Android, such as Android 6.0 and
later, Emacs only receives the following permissions upon
installation:
later, Emacs only receives the following permissions upon installation,
subject to the presence or absence of individual permissions in the
version of Android installed:
@itemize @minus
@item
@code{android.permission.VIBRATE}
@code{android.permission.ACCESS_ADSERVICES_AD_ID}
@item
@code{android.permission.ACCESS_ADSERVICES_ATTRIBUTION}
@item
@code{android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE}
@item
@code{android.permission.ACCESS_ADSERVICES_TOPICS}
@item
@code{android.permission.ACCESS_LOCATION_EXTRA_COMMANDS}
@item
@code{android.permission.ACCESS_NETWORK_STATE}
@item
@code{android.permission.INTERNET}
@code{android.permission.ACCESS_NOTIFICATION_POLICY}
@item
@code{android.permission.SET_WALLPAPER}
@code{android.permission.ACCESS_WIFI_STATE}
@item
@code{android.permission.NFC}
@code{android.permission.AUTHENTICATE_ACCOUNTS}
@item
@code{android.permission.TRANSMIT_IR}
@code{android.permission.BLUETOOTH}
@item
@code{android.permission.WAKE_LOCK}
@code{android.permission.BLUETOOTH_ADMIN}
@item
@code{android.permission.BROADCAST_STICKY}
@item
@code{android.permission.CALL_COMPANION_APP}
@item
@code{android.permission.CHANGE_NETWORK_STATE}
@item
@code{android.permission.CHANGE_WIFI_MULTICAST_STATE}
@item
@code{android.permission.CHANGE_WIFI_STATE}
@item
@code{android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS}
@item
@code{android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS}
@item
@code{android.permission.CREDENTIAL_MANAGER_SET_ORIGIN}
@item
@code{android.permission.DELIVER_COMPANION_MESSAGES}
@item
@code{android.permission.DETECT_SCREEN_CAPTURE}
@item
@code{android.permission.DISABLE_KEYGUARD}
@item
@code{android.permission.ENFORCE_UPDATE_OWNERSHIP}
@item
@code{android.permission.EXPAND_STATUS_BAR}
@item
@code{android.permission.FLASHLIGHT}
@item
@code{android.permission.FOREGROUND_SERVICE}
@item
@code{android.permission.FOREGROUND_SERVICE_CAMERA}
@item
@code{android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}
@item
@code{android.permission.FOREGROUND_SERVICE_DATA_SYNC}
@item
@code{android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT}
@item
@code{android.permission.FOREGROUND_SERVICE_HEALTH}
@item
@code{android.permission.FOREGROUND_SERVICE_LOCATION}
@item
@code{android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK}
@item
@code{android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION}
@item
@code{android.permission.FOREGROUND_SERVICE_MICROPHONE}
@item
@code{android.permission.FOREGROUND_SERVICE_PHONE_CALL}
@item
@code{android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING}
@item
@code{android.permission.FOREGROUND_SERVICE_SPECIAL_USE}
@item
@code{android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED}
@item
@code{android.permission.GET_PACKAGE_SIZE}
@item
@code{android.permission.GET_TASKS}
@item
@code{android.permission.HIDE_OVERLAY_WINDOWS}
@item
@code{android.permission.HIGH_SAMPLING_RATE_SENSORS}
@item
@code{android.permission.INTERNET}
@item
@code{android.permission.KILL_BACKGROUND_PROCESSES}
@item
@code{android.permission.MANAGE_ACCOUNTS}
@item
@code{android.permission.MANAGE_OWN_CALLS}
@item
@code{android.permission.MODIFY_AUDIO_SETTINGS}
@item
@code{android.permission.NFC}
@item
@code{android.permission.NFC_PREFERRED_PAYMENT_INFO}
@item
@code{android.permission.NFC_TRANSACTION_EVENT}
@item
@code{android.permission.PERSISTENT_ACTIVITY}
@item
@code{android.permission.QUERY_ALL_PACKAGES}
@item
@code{android.permission.READ_BASIC_PHONE_STATE}
@item
@code{android.permission.READ_INSTALL_SESSIONS}
@item
@code{android.permission.READ_NEARBY_STREAMING_POLICY}
@item
@code{android.permission.READ_PROFILE}
@item
@code{android.permission.READ_SOCIAL_STREAM}
@item
@code{android.permission.READ_SYNC_SETTINGS}
@item
@code{android.permission.READ_SYNC_STATS}
@item
@code{android.permission.READ_USER_DICTIONARY}
@item
@code{android.permission.RECEIVE_BOOT_COMPLETED}
@item
@code{android.permission.REORDER_TASKS}
@item
@code{android.permission.REQUEST_COMPANION_PROFILE_GLASSES}
@item
@code{android.permission.REQUEST_COMPANION_PROFILE_WATCH}
@item
@code{android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND}
@item
@code{android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND}
@item
@code{android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND}
@item
@code{android.permission.REQUEST_DELETE_PACKAGES}
@item
@code{android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS}
@item
@code{android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE}
@item
@code{android.permission.REQUEST_PASSWORD_COMPLEXITY}
@item
@code{android.permission.RESTART_PACKAGES}
@item
@code{android.permission.RUN_USER_INITIATED_JOBS}
@item
@code{android.permission.SET_WALLPAPER}
@item
@code{android.permission.SET_WALLPAPER_HINTS}
@item
@code{android.permission.SUBSCRIBED_FEEDS_READ}
@item
@code{android.permission.SUBSCRIBED_FEEDS_WRITE}
@item
@code{android.permission.TRANSMIT_IR}
@item
@code{android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION}
@item
@code{android.permission.USE_BIOMETRIC}
@item
@code{android.permission.USE_CREDENTIALS}
@item
@code{android.permission.USE_EXACT_ALARM}
@item
@code{android.permission.USE_FINGERPRINT}
@item
@code{android.permission.USE_FULL_SCREEN_INTENT}
@item
@code{android.permission.VIBRATE}
@item
@code{android.permission.WAKE_LOCK}
@item
@code{android.permission.WRITE_PROFILE}
@item
@code{android.permission.WRITE_SMS}
@item
@code{android.permission.WRITE_SOCIAL_STREAM}
@item
@code{android.permission.WRITE_SYNC_SETTINGS}
@item
@code{android.permission.WRITE_USER_DICTIONARY}
@end itemize
Other permissions must be granted by the user through the system
settings application. Consult the manufacturer of your device for
more details, as how to do this varies by device.
Other permissions must be granted by the user from the system settings
application. Consult the manufacturer of your device for more details,
as how to do this varies by device.
@item
On Android 5.1 and earlier, Emacs automatically receives the following
@ -508,59 +675,139 @@ permissions it has requested upon being installed:
@itemize @minus
@item
@code{android.permission.READ_CONTACTS}
@item
@code{android.permission.WRITE_CONTACTS}
@item
@code{android.permission.VIBRATE}
@item
@code{android.permission.ACCESS_COARSE_LOCATION}
@item
@code{android.permission.ACCESS_NETWORK_STATE}
@code{android.permission.ACCESS_FINE_LOCATION}
@item
@code{android.permission.INTERNET}
@code{android.permission.BODY_SENSORS}
@item
@code{android.permission.SET_WALLPAPER}
@item
@code{android.permission.READ_CALENDAR}
@item
@code{android.permission.WRITE_CALENDAR}
@item
@code{android.permission.READ_EXTERNAL_STORAGE}
@item
@code{android.permission.WRITE_EXTERNAL_STORAGE}
@item
@code{android.permission.SEND_SMS}
@item
@code{android.permission.RECEIVE_SMS}
@item
@code{android.permission.RECEIVE_MMS}
@item
@code{android.permission.WRITE_SMS}
@item
@code{android.permission.READ_SMS}
@item
@code{android.permission.NFC}
@item
@code{android.permission.TRANSMIT_IR}
@item
@code{android.permission.READ_PHONE_STATE}
@item
@code{android.permission.WAKE_LOCK}
@item
@code{android.permission.FOREGROUND_SEVICE}
@item
@code{android.permission.REQUEST_INSTALL_PACKAGES}
@item
@code{android.permission.REQUEST_DELETE_PACKAGES}
@item
@code{android.permission.SYSTEM_ALERT_WINDOW}
@item
@code{android.permission.RECORD_AUDIO}
@code{android.permission.CALL_PHONE}
@item
@code{android.permission.CAMERA}
@item
@code{android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD}
@item
@code{android.permission.GET_ACCOUNTS}
@item
@code{android.permission.POST_NOTIFICATIONS}
@item
@code{android.permission.PROCESS_OUTGOING_CALLS}
@item
@code{android.permission.READ_CALENDAR}
@item
@code{android.permission.READ_CALL_LOG}
@item
@code{android.permission.READ_CELL_BROADCASTS}
@item
@code{android.permission.READ_CONTACTS}
@item
@code{android.permission.READ_EXTERNAL_STORAGE}
@item
@code{android.permission.READ_PHONE_NUMBERS}
@item
@code{android.permission.READ_PHONE_STATE}
@item
@code{android.permission.READ_SMS}
@item
@code{android.permission.RECEIVE_MMS}
@item
@code{android.permission.RECEIVE_SMS}
@item
@code{android.permission.RECEIVE_WAP_PUSH}
@item
@code{android.permission.RECORD_AUDIO}
@item
@code{android.permission.REQUEST_INSTALL_PACKAGES}
@item
@code{android.permission.SEND_SMS}
@item
@code{android.permission.SMS_FINANCIAL_TRANSACTIONS}
@item
@code{android.permission.SYSTEM_ALERT_WINDOW}
@item
@code{android.permission.WRITE_CALENDAR}
@item
@code{android.permission.WRITE_CALL_LOG}
@item
@code{android.permission.WRITE_CONTACTS}
@item
@code{android.permission.WRITE_EXTERNAL_STORAGE}
@item
@code{android.permission.WRITE_SETTINGS}
@item
@code{android.permission.ACCESS_LOCATION_EXTRA_COMMANDS}
@item
@code{android.permission.ACCESS_NETWORK_STATE}
@item
@code{android.permission.ACCESS_WIFI_STATE}
@item
@code{android.permission.BLUETOOTH}
@item
@code{android.permission.BLUETOOTH_ADMIN}
@item
@code{android.permission.BROADCAST_STICKY}
@item
@code{android.permission.CHANGE_NETWORK_STATE}
@item
@code{android.permission.CHANGE_WIFI_MULTICAST_STATE}
@item
@code{android.permission.CHANGE_WIFI_STATE}
@item
@code{android.permission.DISABLE_KEYGUARD}
@item
@code{android.permission.EXPAND_STATUS_BAR}
@item
@code{android.permission.FLASHLIGHT}
@item
@code{android.permission.GET_PACKAGE_SIZE}
@item
@code{android.permission.GET_TASKS}
@item
@code{android.permission.INTERNET}
@item
@code{android.permission.KILL_BACKGROUND_PROCESSES}
@item
@code{android.permission.MODIFY_AUDIO_SETTINGS}
@item
@code{android.permission.NFC}
@item
@code{android.permission.PERSISTENT_ACTIVITY}
@item
@code{android.permission.QUERY_ALL_PACKAGES}
@item
@code{android.permission.READ_BASIC_PHONE_STATE}
@item
@code{android.permission.READ_SYNC_SETTINGS}
@item
@code{android.permission.READ_SYNC_STATS}
@item
@code{android.permission.READ_USER_DICTIONARY}
@item
@code{android.permission.RECEIVE_BOOT_COMPLETED}
@item
@code{android.permission.REORDER_TASKS}
@item
@code{android.permission.REQUEST_DELETE_PACKAGES}
@item
@code{android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS}
@item
@code{android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE}
@item
@code{android.permission.RESTART_PACKAGES}
@item
@code{android.permission.SET_WALLPAPER}
@item
@code{android.permission.SET_WALLPAPER_HINTS}
@item
@code{android.permission.TRANSMIT_IR}
@item
@code{android.permission.VIBRATE}
@item
@code{android.permission.WAKE_LOCK}
@item
@code{android.permission.WRITE_SYNC_SETTINGS}
@item
@code{android.permission.WRITE_USER_DICTIONARY}
@end itemize
While most of these permissions are left unused by Emacs itself, they

View file

@ -64,6 +64,132 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. -->
<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"/>