Merge pull request #2766 from PhilippC/bugfix/potential-crashes-when-registering-receivers
fix potential crashes
This commit is contained in:
		| @@ -356,7 +356,13 @@ public class KP2AKeyboard extends InputMethodService | ||||
|         pFilter.addAction("android.intent.action.PACKAGE_ADDED"); | ||||
|         pFilter.addAction("android.intent.action.PACKAGE_REPLACED"); | ||||
|         pFilter.addAction("android.intent.action.PACKAGE_REMOVED"); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|             registerReceiver(mPluginManager, pFilter, RECEIVER_EXPORTED); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             registerReceiver(mPluginManager, pFilter); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         LatinIMEUtil.GCUtils.getInstance().reset(); | ||||
| @@ -375,16 +381,28 @@ public class KP2AKeyboard extends InputMethodService | ||||
|  | ||||
|         // register to receive ringer mode changes for silent mode | ||||
|         IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|             registerReceiver(mSilentModeReceiver, filter, RECEIVER_EXPORTED); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             registerReceiver(mSilentModeReceiver, filter); | ||||
|         } | ||||
|  | ||||
|         prefs.registerOnSharedPreferenceChangeListener(this); | ||||
|          | ||||
|         //check if we have KP2A data available: | ||||
|         mHadKp2aData = mShowKp2aKeyboard = keepass2android.kbbridge.KeyboardData.hasData(); | ||||
|         mHadKp2aData = mShowKp2aKeyboard = KeyboardData.hasData(); | ||||
|          | ||||
|         mClearKeyboardReceiver = new ClearKeyboardBroadcastReceiver(); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|             registerReceiver(mClearKeyboardReceiver, new IntentFilter(get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)), RECEIVER_EXPORTED); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             registerReceiver(mClearKeyboardReceiver, new IntentFilter(get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this))); | ||||
|         android.util.Log.d("KP2AK", "registered receiver for clear keyboard broadcast: "+get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)); | ||||
|         } | ||||
|         Log.d("KP2AK", "registered receiver for clear keyboard broadcast: "+get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)); | ||||
|          | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -53,6 +53,7 @@ using keepass2android.fileselect; | ||||
| using KeeTrayTOTP.Libraries; | ||||
| using Boolean = Java.Lang.Boolean; | ||||
| using Android.Util; | ||||
| using AndroidX.Core.Content; | ||||
| using Google.Android.Material.Dialog; | ||||
| using keepass2android; | ||||
|  | ||||
| @@ -491,9 +492,9 @@ namespace keepass2android | ||||
| 			App.Kp2a.LastOpenedEntry = new PwEntryOutput(Entry, App.Kp2a.CurrentDb); | ||||
|  | ||||
| 			_pluginActionReceiver = new PluginActionReceiver(this); | ||||
| 			RegisterReceiver(_pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction), ReceiverFlags.Exported); | ||||
| 			ContextCompat.RegisterReceiver(this, _pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction), (int)ReceiverFlags.Exported); | ||||
| 			_pluginFieldReceiver = new PluginFieldReceiver(this); | ||||
| 			RegisterReceiver(_pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField), ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField), (int)ReceiverFlags.Exported); | ||||
|  | ||||
|             var notifyPluginsOnOpenThread = new Thread(NotifyPluginsOnOpen); | ||||
|             notifyPluginsOnOpenThread.Start(); | ||||
|   | ||||
| @@ -21,6 +21,7 @@ using Android.OS; | ||||
| using Android.Preferences; | ||||
| using Android.Runtime; | ||||
| using Android.Views; | ||||
| using AndroidX.Core.Content; | ||||
| using KeePassLib.Serialization; | ||||
|  | ||||
| namespace keepass2android | ||||
| @@ -69,7 +70,7 @@ namespace keepass2android | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intents.DatabaseLocked); | ||||
| 			filter.AddAction(Intent.ActionScreenOff); | ||||
| 			RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
| 		} | ||||
|  | ||||
| 		protected override void OnDestroy() | ||||
|   | ||||
| @@ -21,6 +21,7 @@ using Android.OS; | ||||
| using Android.Preferences; | ||||
| using Android.Runtime; | ||||
| using Android.Views; | ||||
| using AndroidX.Core.Content; | ||||
| using KeePassLib.Serialization; | ||||
|  | ||||
| namespace keepass2android | ||||
| @@ -55,7 +56,7 @@ namespace keepass2android | ||||
|  | ||||
| 			filter.AddAction(Intents.DatabaseLocked); | ||||
| 			filter.AddAction(Intent.ActionScreenOff); | ||||
| 			RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|  | ||||
| 		} | ||||
| 		 | ||||
|   | ||||
| @@ -18,6 +18,7 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file | ||||
| using System; | ||||
| using Android.Content; | ||||
| using Android.OS; | ||||
| using AndroidX.Core.Content; | ||||
| using KeePassLib.Serialization; | ||||
|  | ||||
| namespace keepass2android | ||||
| @@ -39,7 +40,7 @@ namespace keepass2android | ||||
| 			_intentReceiver = new LockCloseActivityBroadcastReceiver(this); | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intents.DatabaseLocked); | ||||
| 			RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
| 		} | ||||
|  | ||||
| 		protected override void OnResume() { | ||||
|   | ||||
| @@ -65,6 +65,7 @@ using Enum = System.Enum; | ||||
| using Exception = System.Exception; | ||||
| using String = System.String; | ||||
| using Toolbar = AndroidX.AppCompat.Widget.Toolbar; | ||||
| using AndroidX.Core.Content; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| @@ -647,7 +648,7 @@ namespace keepass2android | ||||
| 		    _intentReceiver = new PasswordActivityBroadcastReceiver(this); | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intent.ActionScreenOff); | ||||
| 			RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|  | ||||
|  | ||||
|             //use FlagSecure to make sure the last (revealed) character of the master password is not visible in recent apps | ||||
|   | ||||
| @@ -34,6 +34,7 @@ using keepass2android; | ||||
| using KeePassLib; | ||||
| using KeePassLib.Serialization; | ||||
| using Toolbar = AndroidX.AppCompat.Widget.Toolbar; | ||||
| using AndroidX.Core.Content; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| @@ -153,7 +154,7 @@ namespace keepass2android | ||||
| 			_intentReceiver = new QuickUnlockBroadcastReceiver(this); | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intents.DatabaseLocked); | ||||
| 			RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|  | ||||
|             Util.SetNoPersonalizedLearning(FindViewById<EditText>(Resource.Id.QuickUnlock_password)); | ||||
|  | ||||
|   | ||||
| @@ -26,6 +26,7 @@ using KeePassLib.Keys; | ||||
| using KeePassLib.Serialization; | ||||
| using Console = System.Console; | ||||
| using Object = Java.Lang.Object; | ||||
| using AndroidX.Core.Content; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| @@ -343,7 +344,7 @@ namespace keepass2android | ||||
|                 IntentFilter filter = new IntentFilter(); | ||||
|                 filter.AddAction(Intents.DatabaseLocked); | ||||
|                 filter.AddAction(Intent.ActionScreenOff); | ||||
|                 RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported); | ||||
|                 ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -1342,7 +1342,7 @@ namespace keepass2android | ||||
| 		    intentFilter.AddAction(Intents.LockDatabase); | ||||
|             intentFilter.AddAction(Intents.LockDatabaseByTimeout); | ||||
| 			intentFilter.AddAction(Intents.CloseDatabase); | ||||
|             Context.RegisterReceiver(broadcastReceiver, intentFilter, ReceiverFlags.Exported); | ||||
| 			ContextCompat.RegisterReceiver(Context, broadcastReceiver, intentFilter, (int)ReceiverFlags.Exported); | ||||
|  | ||||
|             //ZXing.Net.Mobile.Forms.Android.Platform.Init(); | ||||
| 		} | ||||
|   | ||||
| @@ -39,6 +39,7 @@ using KeePass.Util.Spr; | ||||
| using keepass2android; | ||||
| using KeePassLib.Serialization; | ||||
| using PluginTOTP; | ||||
| using AndroidX.Core.Content; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| @@ -322,7 +323,8 @@ namespace keepass2android | ||||
|                 _stopOnLockBroadcastReceiver = new StopOnLockBroadcastReceiver(this); | ||||
|                 IntentFilter filter = new IntentFilter(); | ||||
|                 filter.AddAction(Intents.DatabaseLocked); | ||||
|                 RegisterReceiver(_stopOnLockBroadcastReceiver, filter, ReceiverFlags.Exported); | ||||
|  | ||||
|                 ContextCompat.RegisterReceiver(this, _stopOnLockBroadcastReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|             } | ||||
|  | ||||
|             if ((intent.Action == Intents.ShowNotification) || (intent.Action == Intents.UpdateKeyboard)) | ||||
| @@ -529,7 +531,7 @@ namespace keepass2android | ||||
|                 _notificationDeletedBroadcastReceiver = new NotificationDeletedBroadcastReceiver(this); | ||||
|                 IntentFilter deletefilter = new IntentFilter(); | ||||
|                 deletefilter.AddAction(ActionNotificationCancelled); | ||||
|                 RegisterReceiver(_notificationDeletedBroadcastReceiver, deletefilter, ReceiverFlags.Exported); | ||||
|                 ContextCompat.RegisterReceiver(this, _notificationDeletedBroadcastReceiver, deletefilter, (int)ReceiverFlags.Exported); | ||||
|             } | ||||
|              | ||||
|         } | ||||
|   | ||||
| @@ -23,6 +23,7 @@ using Android.Graphics; | ||||
| using Android.OS; | ||||
| using Android.Preferences; | ||||
| using AndroidX.Core.App; | ||||
| using AndroidX.Core.Content; | ||||
| using keepass2android; | ||||
| using KeePassLib.Utility; | ||||
|  | ||||
| @@ -60,7 +61,7 @@ namespace keepass2android | ||||
| 			_screenOffReceiver = new ScreenOffReceiver(); | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intent.ActionScreenOff); | ||||
| 			RegisterReceiver(_screenOffReceiver, filter, ReceiverFlags.Exported); | ||||
|             ContextCompat.RegisterReceiver(this, _screenOffReceiver, filter, (int)ReceiverFlags.Exported); | ||||
|         } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 PhilippC
					PhilippC