| <?xml version="1.0" encoding="utf-8"?> |
| <!-- Copyright (C) 2012 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| coreApp="true" |
| package="com.android.inputmethod.latin" |
| android:versionCode="30"> |
| |
| <uses-sdk android:minSdkVersion="21" |
| android:targetSdkVersion="30"/> |
| |
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> |
| <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> |
| <uses-permission android:name="android.permission.GET_ACCOUNTS"/> |
| <uses-permission android:name="android.permission.READ_CONTACTS"/> |
| <uses-permission android:name="android.permission.READ_PROFILE"/> |
| <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.USE_CREDENTIALS"/> |
| <uses-permission android:name="android.permission.VIBRATE"/> |
| <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
| <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> |
| <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/> |
| |
| <!-- A signature-protected permission to ask AOSP Keyboard to close the software keyboard. |
| To use this, add the following line into calling application's AndroidManifest.xml |
| <pre> |
| {@code |
| <uses-permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"/> |
| } |
| </pre> |
| then call {@link android.content.Context#sendBroadcast(Intent)} as follows: |
| <pre> |
| {@code |
| sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT") |
| .setPackage("com.android.inputmethod.latin")); |
| } |
| </pre> --> |
| <permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT" |
| android:protectionLevel="signature"/> |
| |
| <application android:label="@string/english_ime_name" |
| android:icon="@drawable/ic_launcher_keyboard" |
| android:supportsRtl="true" |
| android:allowBackup="true" |
| android:defaultToDeviceProtectedStorage="true" |
| android:directBootAware="true"> |
| |
| <!-- Services --> |
| <service android:name="LatinIME" |
| android:label="@string/english_ime_name" |
| android:permission="android.permission.BIND_INPUT_METHOD" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.view.InputMethod"/> |
| </intent-filter> |
| <meta-data android:name="android.view.im" |
| android:resource="@xml/method"/> |
| </service> |
| |
| <service android:name=".spellcheck.AndroidSpellCheckerService" |
| android:label="@string/spell_checker_service_name" |
| android:permission="android.permission.BIND_TEXT_SERVICE" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.service.textservice.SpellCheckerService"/> |
| </intent-filter> |
| <meta-data android:name="android.view.textservice.scs" |
| android:resource="@xml/spellchecker"/> |
| </service> |
| |
| <service android:name="com.android.inputmethod.dictionarypack.DictionaryService" |
| android:label="@string/dictionary_service_name"> |
| </service> |
| |
| <!-- Activities --> |
| <activity android:name=".setup.SetupActivity" |
| android:theme="@style/platformActivityTheme" |
| android:label="@string/english_ime_name" |
| android:icon="@drawable/ic_launcher_keyboard" |
| android:launchMode="singleTask" |
| android:noHistory="true" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| <category android:name="android.intent.category.LAUNCHER"/> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name=".permissions.PermissionsActivity" |
| android:theme="@android:style/Theme.Translucent.NoTitleBar" |
| android:exported="false" |
| android:taskAffinity=""> |
| </activity> |
| |
| <activity android:name=".setup.SetupWizardActivity" |
| android:theme="@style/platformActivityTheme" |
| android:label="@string/english_ime_name" |
| android:clearTaskOnLaunch="true" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name=".settings.SettingsActivity" |
| android:theme="@style/platformSettingsTheme" |
| android:label="@string/english_ime_settings" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name=".spellcheck.SpellCheckerSettingsActivity" |
| android:theme="@style/platformSettingsTheme" |
| android:label="@string/android_spell_checker_settings" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity" |
| android:theme="@style/platformSettingsTheme" |
| android:label="@string/dictionary_settings_title" |
| android:uiOptions="splitActionBarWhenNarrow" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name="com.android.inputmethod.dictionarypack.DownloadOverMeteredDialog" |
| android:theme="@style/platformActivityTheme" |
| android:label="@string/dictionary_install_over_metered_network_prompt" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN"/> |
| </intent-filter> |
| </activity> |
| |
| <!-- Unexported activity used for tests. --> |
| <activity android:name=".settings.TestFragmentActivity" |
| android:exported="false"/> |
| |
| <!-- Broadcast receivers --> |
| <receiver android:name="SystemBroadcastReceiver" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> |
| <action android:name="android.intent.action.BOOT_COMPLETED"/> |
| <action android:name="android.intent.action.USER_INITIALIZE"/> |
| <action android:name="android.intent.action.LOCALE_CHANGED"/> |
| </intent-filter> |
| </receiver> |
| |
| <receiver android:name="DictionaryPackInstallBroadcastReceiver" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT"/> |
| </intent-filter> |
| </receiver> |
| |
| <receiver android:name="com.android.inputmethod.dictionarypack.EventHandler" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/> |
| <action android:name="android.intent.action.DATE_CHANGED"/> |
| <action android:name="com.android.inputmethod.dictionarypack.aosp.UPDATE_NOW"/> |
| <action android:name="com.android.inputmethod.dictionarypack.aosp.INIT_AND_UPDATE_NOW"/> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Broadcast receiver for AccountManager#LOGIN_ACCOUNTS_CHANGED_ACTION. --> |
| <receiver android:name=".accounts.AccountsChangedReceiver" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Content providers --> |
| <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider" |
| android:grantUriPermissions="true" |
| android:exported="false" |
| android:authorities="@string/authority" |
| android:multiprocess="false" |
| android:label="@string/dictionary_provider_name"> |
| </provider> |
| </application> |
| </manifest> |