diff options
author | 2023-03-09 15:55:06 -0600 | |
---|---|---|
committer | 2023-03-09 16:22:00 -0600 | |
commit | 3932195a50fe0e4ab5918d21c9c7b29c11c253ba (patch) | |
tree | cab7f18002c813c289f9100b5ca0f706295fdc96 /java/src/com/android/inputmethod/latin/LatinIME.java | |
parent | 213f4d56042c73a3d64753bdcad52fe67d75433b (diff) | |
download | latinime-3932195a50fe0e4ab5918d21c9c7b29c11c253ba.tar.gz latinime-3932195a50fe0e4ab5918d21c9c7b29c11c253ba.tar.xz latinime-3932195a50fe0e4ab5918d21c9c7b29c11c253ba.zip |
Add required flag to receivers in LatinIME
Android T allows apps to declare a runtime receiver as not exported
by invoking registerReceiver with a new RECEIVER_NOT_EXPORTED flag;
receivers registered with this flag will only receive broadcasts from
the platform and the app itself. However to ensure developers can
properly protect their receivers, all apps targeting U
and registering a receiver for non-system broadcasts must
specify either the exported or not exported flag when invoking
registerReceiver; if one of these flags is not provided, the
platform will throw a SecurityException. This commit updates
the dictionary receivers with the RECEIVER_NOT_EXPORTED flag since
these are only sent from the local app. The HIDE_SOFT_INPUT
receiver is flagged with the RECEIVER_EXPORTED flag since it
can be sent by any app with the corresponding permission.
Bug: 234659204
Test: Build
Change-Id: I2b9a1360e0eb1c1965c07cc71dca9f11eb153517
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinIME.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 8ed3a59bf..e68b43b39 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -628,16 +628,31 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final IntentFilter newDictFilter = new IntentFilter(); newDictFilter.addAction(DictionaryPackConstants.NEW_DICTIONARY_INTENT_ACTION); - registerReceiver(mDictionaryPackInstallReceiver, newDictFilter); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + registerReceiver(mDictionaryPackInstallReceiver, newDictFilter, + Context.RECEIVER_NOT_EXPORTED); + } else { + registerReceiver(mDictionaryPackInstallReceiver, newDictFilter); + } final IntentFilter dictDumpFilter = new IntentFilter(); dictDumpFilter.addAction(DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION); - registerReceiver(mDictionaryDumpBroadcastReceiver, dictDumpFilter); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + registerReceiver(mDictionaryDumpBroadcastReceiver, dictDumpFilter, + Context.RECEIVER_NOT_EXPORTED); + } else { + registerReceiver(mDictionaryDumpBroadcastReceiver, dictDumpFilter); + } final IntentFilter hideSoftInputFilter = new IntentFilter(); hideSoftInputFilter.addAction(ACTION_HIDE_SOFT_INPUT); - registerReceiver(mHideSoftInputReceiver, hideSoftInputFilter, PERMISSION_HIDE_SOFT_INPUT, - null /* scheduler */); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + registerReceiver(mHideSoftInputReceiver, hideSoftInputFilter, + PERMISSION_HIDE_SOFT_INPUT, null /* scheduler */, Context.RECEIVER_EXPORTED); + } else { + registerReceiver(mHideSoftInputReceiver, hideSoftInputFilter, + PERMISSION_HIDE_SOFT_INPUT, null /* scheduler */); + } StatsUtils.onCreate(mSettings.getCurrent(), mRichImm); } |