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 <application android:label="@string/english_ime_name" 58 android:icon="@drawable/ic_launcher_keyboard" 59 android:supportsRtl="true" 60 android:allowBackup="true" 61 android:defaultToDeviceProtectedStorage="true" 62 android:directBootAware="true"> 63 64 <!-- Services --> 65 <service android:name="LatinIME" 66 android:label="@string/english_ime_name" 67 android:permission="android.permission.BIND_INPUT_METHOD" 68 android:exported="true"> 69 <intent-filter> 70 <action android:name="android.view.InputMethod"/> 71 </intent-filter> 72 <meta-data android:name="android.view.im" 73 android:resource="@xml/method"/> 74 </service> 75 76 <service android:name=".spellcheck.AndroidSpellCheckerService" 77 android:label="@string/spell_checker_service_name" 78 android:permission="android.permission.BIND_TEXT_SERVICE" 79 android:exported="true"> 80 <intent-filter> 81 <action android:name="android.service.textservice.SpellCheckerService"/> 82 </intent-filter> 83 <meta-data android:name="android.view.textservice.scs" 84 android:resource="@xml/spellchecker"/> 85 </service> 86 87 <service android:name="com.android.inputmethod.dictionarypack.DictionaryService" 88 android:label="@string/dictionary_service_name"> 89 </service> 90 91 <!-- Activities --> 92 <activity android:name=".setup.SetupActivity" 93 android:theme="@style/platformActivityTheme" 94 android:label="@string/english_ime_name" 95 android:icon="@drawable/ic_launcher_keyboard" 96 android:launchMode="singleTask" 97 android:noHistory="true" 98 android:exported="true"> 99 <intent-filter> 100 <action android:name="android.intent.action.MAIN"/> 101 <category android:name="android.intent.category.LAUNCHER"/> 102 </intent-filter> 103 </activity> 104 105 <activity android:name=".permissions.PermissionsActivity" 106 android:theme="@android:style/Theme.Translucent.NoTitleBar" 107 android:exported="false" 108 android:taskAffinity=""> 109 </activity> 110 111 <activity android:name=".setup.SetupWizardActivity" 112 android:theme="@style/platformActivityTheme" 113 android:label="@string/english_ime_name" 114 android:clearTaskOnLaunch="true" 115 android:exported="true"> 116 <intent-filter> 117 <action android:name="android.intent.action.MAIN"/> 118 </intent-filter> 119 </activity> 120 121 <activity android:name=".settings.SettingsActivity" 122 android:theme="@style/platformSettingsTheme" 123 android:label="@string/english_ime_settings" 124 android:exported="true"> 125 <intent-filter> 126 <action android:name="android.intent.action.MAIN"/> 127 </intent-filter> 128 </activity> 129 130 <activity android:name=".spellcheck.SpellCheckerSettingsActivity" 131 android:theme="@style/platformSettingsTheme" 132 android:label="@string/android_spell_checker_settings" 133 android:exported="true"> 134 <intent-filter> 135 <action android:name="android.intent.action.MAIN"/> 136 </intent-filter> 137 </activity> 138 139 <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity" 140 android:theme="@style/platformSettingsTheme" 141 android:label="@string/dictionary_settings_title" 142 android:uiOptions="splitActionBarWhenNarrow" 143 android:exported="true"> 144 <intent-filter> 145 <action android:name="android.intent.action.MAIN"/> 146 </intent-filter> 147 </activity> 148 149 <activity android:name="com.android.inputmethod.dictionarypack.DownloadOverMeteredDialog" 150 android:theme="@style/platformActivityTheme" 151 android:label="@string/dictionary_install_over_metered_network_prompt" 152 android:exported="true"> 153 <intent-filter> 154 <action android:name="android.intent.action.MAIN"/> 155 </intent-filter> 156 </activity> 157 158 <!-- Unexported activity used for tests. --> 159 <activity android:name=".settings.TestFragmentActivity" 160 android:exported="false"/> 161 162 <!-- Broadcast receivers --> 163 <receiver android:name="SystemBroadcastReceiver" 164 android:exported="true"> 165 <intent-filter> 166 <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> 167 <action android:name="android.intent.action.BOOT_COMPLETED"/> 168 <action android:name="android.intent.action.USER_INITIALIZE"/> 169 <action android:name="android.intent.action.LOCALE_CHANGED"/> 170 </intent-filter> 171 </receiver> 172 173 <receiver android:name="DictionaryPackInstallBroadcastReceiver" 174 android:exported="false"> 175 <intent-filter> 176 <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT"/> 177 </intent-filter> 178 </receiver> 179 180 <receiver android:name="com.android.inputmethod.dictionarypack.EventHandler" 181 android:exported="true"> 182 <intent-filter> 183 <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/> 184 <action android:name="android.intent.action.DATE_CHANGED"/> 185 <action android:name="com.android.inputmethod.dictionarypack.aosp.UPDATE_NOW"/> 186 <action android:name="com.android.inputmethod.dictionarypack.aosp.INIT_AND_UPDATE_NOW"/> 187 </intent-filter> 188 </receiver> 189 190 <!-- Broadcast receiver for AccountManager#LOGIN_ACCOUNTS_CHANGED_ACTION. --> 191 <receiver android:name=".accounts.AccountsChangedReceiver" 192 android:exported="true"> 193 <intent-filter> 194 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/> 195 </intent-filter> 196 </receiver> 197 198 <!-- Content providers --> 199 <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider" 200 android:grantUriPermissions="true" 201 android:exported="false" 202 android:authorities="@string/authority" 203 android:multiprocess="false" 204 android:label="@string/dictionary_provider_name"> 205 </provider> 206 </application> 207</manifest> 208