after updating to targetSdkVersion=34, an implicit mutable intent could lead to a crash.
closes https://github.com/PhilippC/keepass2android/issues/2790
This commit is contained in:
		
							
								
								
									
										24
									
								
								src/keepass2android-app/NullActivity.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/keepass2android-app/NullActivity.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | using Android.Content.PM; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Text; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  |  | ||||||
|  | namespace keepass2android | ||||||
|  | { | ||||||
|  |     [Activity(Label = AppNames.AppName, | ||||||
|  |         MainLauncher = false, | ||||||
|  |         Theme = "@style/Kp2aTheme_BlueNoActionBar", | ||||||
|  |         Exported = true)]  | ||||||
|  |     ///For autofill, we sometimes need to pass an intent to an inline presentation which never gets fired. We use this as a dummy activity. | ||||||
|  |     public class NullActivity: Activity | ||||||
|  |     { | ||||||
|  |         protected override void OnCreate(Bundle savedInstanceState) | ||||||
|  |         { | ||||||
|  |             Kp2aLog.Log("NullActivity.OnCreate - this is unexpected."); | ||||||
|  |             base.OnCreate(savedInstanceState); | ||||||
|  |             Finish(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -30,10 +30,9 @@ namespace keepass2android.services.AutofillBase | |||||||
|             { |             { | ||||||
|                 return null; |                 return null; | ||||||
|             } |             } | ||||||
|             //make sure we have a pendingIntent always not null |             // If the pending intent is null, we need to create a dummy one to avoid a crash | ||||||
|             pendingIntent ??= PendingIntent.GetService(context, 0, new Intent(), |             pendingIntent ??= PendingIntent.GetActivity(context, 0, new Intent(context, typeof(NullActivity)), PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable); | ||||||
|                 Util.AddMutabilityFlag(PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent, PendingIntentFlags.Mutable)); |  | ||||||
|              |  | ||||||
|             var slice = CreateInlinePresentationSlice( |             var slice = CreateInlinePresentationSlice( | ||||||
|                 inlinePresentationSpec, |                 inlinePresentationSpec, | ||||||
|                 text, |                 text, | ||||||
|   | |||||||
| @@ -405,7 +405,7 @@ namespace keepass2android.services.AutofillBase | |||||||
|             var datasetBuilder = new Dataset.Builder(presentation); |             var datasetBuilder = new Dataset.Builder(presentation); | ||||||
|             datasetBuilder.SetAuthentication(pendingIntent?.IntentSender); |             datasetBuilder.SetAuthentication(pendingIntent?.IntentSender); | ||||||
|  |  | ||||||
|             AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, Resource.Drawable.baseline_close_24, null); |             AutofillHelper.AddInlinePresentation(this, inlinePresentationSpec, text, datasetBuilder, Resource.Drawable.baseline_close_24, pendingIntent); | ||||||
|  |  | ||||||
|             foreach (var autofillId in autofillIds) |             foreach (var autofillId in autofillIds) | ||||||
|             { |             { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Crocoll
					Philipp Crocoll