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,9 +30,8 @@ namespace keepass2android.services.AutofillBase | ||||
|             { | ||||
|                 return null; | ||||
|             } | ||||
|             //make sure we have a pendingIntent always not null | ||||
|             pendingIntent ??= PendingIntent.GetService(context, 0, new Intent(), | ||||
|                 Util.AddMutabilityFlag(PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent, PendingIntentFlags.Mutable)); | ||||
|             // If the pending intent is null, we need to create a dummy one to avoid a crash | ||||
|             pendingIntent ??= PendingIntent.GetActivity(context, 0, new Intent(context, typeof(NullActivity)), PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable); | ||||
|  | ||||
|             var slice = CreateInlinePresentationSlice( | ||||
|                 inlinePresentationSpec, | ||||
|   | ||||
| @@ -405,7 +405,7 @@ namespace keepass2android.services.AutofillBase | ||||
|             var datasetBuilder = new Dataset.Builder(presentation); | ||||
|             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) | ||||
|             { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Crocoll
					Philipp Crocoll