Browse Source

Add Android version checks where necessary (#14896)

release/11.1.0-beta2
Julien Lebosquain 2 years ago
committed by Max Katz
parent
commit
39f3792888
  1. 1
      src/Android/Avalonia.Android/AvaloniaMainActivity.cs
  2. 4
      src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs
  3. 2
      src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidMotionEventsHelper.cs
  4. 3
      src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs
  5. 22
      src/Android/Avalonia.Android/Platform/Storage/AndroidStorageProvider.cs

1
src/Android/Avalonia.Android/AvaloniaMainActivity.cs

@ -31,6 +31,7 @@ namespace Avalonia.Android
remove { _onDeactivated -= value; }
}
[ObsoletedOSPlatform("android33.0")]
public override void OnBackPressed()
{
var eventArgs = new AndroidBackRequestedEventArgs();

4
src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs

@ -1,6 +1,7 @@
#nullable enable
using System;
using System.Runtime.Versioning;
using Android.Views;
using Avalonia.Android.Platform.Input;
using Avalonia.Android.Platform.SkiaPlatform;
@ -32,6 +33,7 @@ namespace Avalonia.Android.Platform.Specific.Helpers
return DispatchKeyEventInternal(e, out callBase);
}
[ObsoletedOSPlatform("android29.0")]
static string? UnicodeTextInput(KeyEvent keyEvent)
{
return keyEvent.Action == KeyEventActions.Multiple
@ -43,7 +45,7 @@ namespace Avalonia.Android.Platform.Specific.Helpers
private bool? DispatchKeyEventInternal(KeyEvent e, out bool callBase)
{
var unicodeTextInput = UnicodeTextInput(e);
var unicodeTextInput = OperatingSystem.IsAndroidVersionAtLeast(29) ? null : UnicodeTextInput(e);
if (e.Action == KeyEventActions.Multiple && unicodeTextInput == null)
{

2
src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidMotionEventsHelper.cs

@ -145,7 +145,7 @@ namespace Avalonia.Android.Platform.Specific.Helpers
{
modifiers |= RawInputModifiers.XButton2MouseButton;
}
if (buttonState.HasAnyFlag(MotionEventButtonState.StylusPrimary))
if (OperatingSystem.IsAndroidVersionAtLeast(23) && buttonState.HasAnyFlag(MotionEventButtonState.StylusPrimary))
{
modifiers |= RawInputModifiers.PenBarrelButton;
}

3
src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs

@ -353,6 +353,9 @@ internal sealed class AndroidStorageFile : AndroidStorageItem, IStorageBookmarkF
private bool IsVirtualFile(Context context, AndroidUri uri)
{
if (!OperatingSystem.IsAndroidVersionAtLeast(24))
return false;
if (!DocumentsContract.IsDocumentUri(context, uri))
return false;

22
src/Android/Avalonia.Android/Platform/Storage/AndroidStorageProvider.cs

@ -150,10 +150,7 @@ internal class AndroidStorageProvider : IStorageProvider
intent = intent.PutExtra(Intent.ExtraMimeTypes, mimeTypes);
}
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri)
{
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri);
}
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation);
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Select file");
@ -183,10 +180,7 @@ internal class AndroidStorageProvider : IStorageProvider
intent = intent.PutExtra(Intent.ExtraTitle, fileName);
}
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri)
{
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri);
}
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation);
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Save file");
@ -198,10 +192,8 @@ internal class AndroidStorageProvider : IStorageProvider
{
var intent = new Intent(Intent.ActionOpenDocumentTree)
.PutExtra(Intent.ExtraAllowMultiple, options.AllowMultiple);
if (TryGetInitialUri(options.SuggestedStartLocation) is { } initialUri)
{
intent = intent.PutExtra(DocumentsContract.ExtraInitialUri, initialUri);
}
intent = TryAddExtraInitialUri(intent, options.SuggestedStartLocation);
var pickerIntent = Intent.CreateChooser(intent, options.Title ?? "Select folder");
@ -265,15 +257,15 @@ internal class AndroidStorageProvider : IStorageProvider
}
}
private static AndroidUri? TryGetInitialUri(IStorageFolder? folder)
private static Intent TryAddExtraInitialUri(Intent intent, IStorageFolder? folder)
{
if (OperatingSystem.IsAndroidVersionAtLeast(26)
&& (folder as AndroidStorageItem)?.Uri is { } uri)
{
return uri;
return intent.PutExtra(DocumentsContract.ExtraInitialUri, uri);
}
return null;
return intent;
}
private async Task EnsureUriReadPermission(AndroidUri androidUri)

Loading…
Cancel
Save