1<?xml version="1.0" encoding="utf-8"?> 2<!-- Copyright (C) 2012 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16 17<manifest xmlns:android="http://schemas.android.com/apk/res/android" 18 coreApp="true" 19 package="com.android.inputmethod.latin" 20 android:versionCode="30"> 21 22 <uses-sdk android:minSdkVersion="21" 23 android:targetSdkVersion="30"/> 24 25 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 26 <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> 27 <uses-permission android:name="android.permission.GET_ACCOUNTS"/> 28 <uses-permission android:name="android.permission.READ_CONTACTS"/> 29 <uses-permission android:name="android.permission.READ_PROFILE"/> 30 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/> 31 <uses-permission android:name="android.permission.READ_SYNC_STATS"/> 32 <uses-permission android:name="android.permission.READ_USER_DICTIONARY"/> 33 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 34 <uses-permission android:name="android.permission.USE_CREDENTIALS"/> 35 <uses-permission android:name="android.permission.VIBRATE"/> 36 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 37 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> 38 <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/> 39 40 <!-- A signature-protected permission to ask AOSP Keyboard to close the software keyboard. 41 To use this, add the following line into calling application's AndroidManifest.xml 42 <pre> 43 {@code 44 <uses-permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"/> 45 } 46 </pre> 47 then call {@link android.content.Context#sendBroadcast(Intent)} as follows: 48 <pre> 49 {@code 50 sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT") 51 .setPackage("com.android.inputmethod.latin")); 52 } 53 </pre> --> 54 <permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT" 55 android:protectionLevel="signature"/> 56 57 <!-- To query enabled input methods. --> 58 <queries> 59 <intent> 60 <action android:name="android.view.InputMethod" /> 61 </intent> 62 </queries> 63 64 <application android:label="@string/english_ime_name" 65 android:icon="@drawable/ic_launcher_keyboard" 66 android:supportsRtl="true" 67 android:allowBackup="true" 68 android:defaultToDeviceProtectedStorage="true" 69 android:directBootAware="true"> 70 71 <!-- Services --> 72 <service android:name="LatinIME" 73 android:label="@string/english_ime_name" 74 android:permission="android.permission.BIND_INPUT_METHOD" 75 android:exported="true" 76 android:visibleToInstantApps="true"> 77 <intent-filter> 78 <action android:name="android.view.InputMethod"/> 79 </intent-filter> 80 <meta-data android:name="android.view.im" 81 android:resource="@xml/method"/> 82 </service> 83 84 <service android:name=".spellcheck.AndroidSpellCheckerService" 85 android:label="@string/spell_checker_service_name" 86 android:permission="android.permission.BIND_TEXT_SERVICE" 87 android:exported="true"> 88 <intent-filter> 89 <action android:name="android.service.textservice.SpellCheckerService"/> 90 </intent-filter> 91 <meta-data android:name="android.view.textservice.scs" 92 android:resource="@xml/spellchecker"/> 93 </service> 94 95 <service android:name="com.android.inputmethod.dictionarypack.DictionaryService" 96 android:label="@string/dictionary_service_name"> 97 </service> 98 99 <!-- Activities --> 100 <activity android:name=".setup.SetupActivity" 101 android:theme="@style/platformActivityTheme" 102 android:label="@string/english_ime_name" 103 android:icon="@drawable/ic_launcher_keyboard" 104 android:launchMode="singleTask" 105 android:noHistory="true" 106 android:exported="true"> 107 <intent-filter> 108 <action android:name="android.intent.action.MAIN"/> 109 <category android:name="android.intent.category.LAUNCHER"/> 110 </intent-filter> 111 </activity> 112 113 <activity android:name=".permissions.PermissionsActivity" 114 android:theme="@android:style/Theme.Translucent.NoTitleBar" 115 android:exported="false" 116 android:taskAffinity=""> 117 </activity> 118 119 <activity android:name=".setup.SetupWizardActivity" 120 android:theme="@style/platformActivityTheme" 121 android:label="@string/english_ime_name" 122 android:clearTaskOnLaunch="true" 123 android:exported="true"> 124 <intent-filter> 125 <action android:name="android.intent.action.MAIN"/> 126 </intent-filter> 127 </activity> 128 129 <activity android:name=".settings.SettingsActivity" 130 android:theme="@style/platformSettingsTheme" 131 android:label="@string/english_ime_settings" 132 android:exported="true"> 133 <intent-filter> 134 <action android:name="android.intent.action.MAIN"/> 135 </intent-filter> 136 </activity> 137 138 <activity android:name=".spellcheck.SpellCheckerSettingsActivity" 139 android:theme="@style/platformSettingsTheme" 140 android:label="@string/android_spell_checker_settings" 141 android:exported="true"> 142 <intent-filter> 143 <action android:name="android.intent.action.MAIN"/> 144 </intent-filter> 145 </activity> 146 147 <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity" 148 android:theme="@style/platformSettingsTheme" 149 android:label="@string/dictionary_settings_title" 150 android:uiOptions="splitActionBarWhenNarrow" 151 android:exported="true"> 152 <intent-filter> 153 <action android:name="android.intent.action.MAIN"/> 154 </intent-filter> 155 </activity> 156 157 <activity android:name="com.android.inputmethod.dictionarypack.DownloadOverMeteredDialog" 158 android:theme="@style/platformActivityTheme" 159 android:label="@string/dictionary_install_over_metered_network_prompt" 160 android:exported="false"> 161 <intent-filter> 162 <action android:name="android.intent.action.MAIN"/> 163 </intent-filter> 164 </activity> 165 166 <!-- Unexported activity used for tests. --> 167 <activity android:name=".settings.TestFragmentActivity" 168 android:exported="false"/> 169 170 <!-- Broadcast receivers --> 171 <receiver android:name="SystemBroadcastReceiver" 172 android:exported="true"> 173 <intent-filter> 174 <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> 175 <action android:name="android.intent.action.BOOT_COMPLETED"/> 176 <action android:name="android.intent.action.USER_INITIALIZE"/> 177 <action android:name="android.intent.action.LOCALE_CHANGED"/> 178 </intent-filter> 179 </receiver> 180 181 <receiver android:name="DictionaryPackInstallBroadcastReceiver" 182 android:exported="false"> 183 <intent-filter> 184 <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT"/> 185 </intent-filter> 186 </receiver> 187 188 <receiver android:name="com.android.inputmethod.dictionarypack.EventHandler" 189 android:exported="true"> 190 <intent-filter> 191 <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/> 192 <action android:name="android.intent.action.DATE_CHANGED"/> 193 <action android:name="com.android.inputmethod.dictionarypack.aosp.UPDATE_NOW"/> 194 <action android:name="com.android.inputmethod.dictionarypack.aosp.INIT_AND_UPDATE_NOW"/> 195 </intent-filter> 196 </receiver> 197 198 <!-- Broadcast receiver for AccountManager#LOGIN_ACCOUNTS_CHANGED_ACTION. --> 199 <receiver android:name=".accounts.AccountsChangedReceiver" 200 android:exported="true"> 201 <intent-filter> 202 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/> 203 </intent-filter> 204 </receiver> 205 206 <!-- Content providers --> 207 <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider" 208 android:grantUriPermissions="true" 209 android:exported="false" 210 android:authorities="@string/authority" 211 android:multiprocess="false" 212 android:label="@string/dictionary_provider_name"> 213 </provider> 214 </application> 215</manifest> 216