Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa Launcher umożliwia aplikacji otwieranie identyfikatora URI przez system. Jest to często używane podczas głębokiego łączenia z niestandardowymi schematami identyfikatorów URI innej aplikacji. Jeśli chcesz otworzyć przeglądarkę w witrynie internetowej, zapoznaj się z interfejsem API przeglądarki .
Rozpocznij
Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.
Korzystanie z modułu uruchamiania
Dodaj odwołanie do Xamarin.Essentials klasy:
using Xamarin.Essentials;
Aby użyć funkcji Uruchamiania, wywołaj metodę OpenAsync i przekaż string element lub Uri , aby go otworzyć. Opcjonalnie można użyć metody w celu sprawdzenia, CanOpenAsync czy schemat identyfikatora URI może być obsługiwany przez aplikację na urządzeniu.
public class LauncherTest
{
public async Task OpenRideShareAsync()
{
var supportsUri = await Launcher.CanOpenAsync("lyft://");
if (supportsUri)
await Launcher.OpenAsync("lyft://ridetype?id=lyft_line");
}
}
Można to połączyć w jedno wywołanie za pomocą TryOpenAsyncpolecenia , które sprawdza, czy można otworzyć parametr i jeśli tak go otworzyć.
public class LauncherTest
{
public async Task<bool> OpenRideShareAsync()
{
return await Launcher.TryOpenAsync("lyft://ridetype?id=lyft_line");
}
}
Dodatkowa konfiguracja platformy
Brak dodatkowej konfiguracji.
Pliki
Ta funkcja umożliwia aplikacji żądanie otwarcia i wyświetlenia pliku przez inne aplikacje. Xamarin.Essentials Program automatycznie wykryje typ pliku (MIME) i zażąda otwarcia pliku.
Oto przykład zapisu tekstu na dysku i żądanie jego otwarcia:
var fn = "File.txt";
var file = Path.Combine(FileSystem.CacheDirectory, fn);
File.WriteAllText(file, "Hello World");
await Launcher.OpenAsync(new OpenFileRequest
{
File = new ReadOnlyFile(file)
});
Lokalizacja prezentacji podczas otwierania plików
Podczas żądania udostępniania lub otwierania modułu uruchamiania w systemie iPadOS masz możliwość prezentowania w oknie podręcznym kontroli. Określa, gdzie pojawi się okienko podręczne i wskaż strzałkę bezpośrednio do. Ta lokalizacja jest często kontrolką uruchamiającą akcję. Lokalizację można określić przy użyciu PresentationSourceBounds właściwości :
await Share.RequestAsync(new ShareFileRequest
{
Title = Title,
File = new ShareFile(file),
PresentationSourceBounds = DeviceInfo.Platform== DevicePlatform.iOS && DeviceInfo.Idiom == DeviceIdiom.Tablet
? new System.Drawing.Rectangle(0, 20, 0, 0)
: System.Drawing.Rectangle.Empty
});
await Launcher.OpenAsync(new OpenFileRequest
{
File = new ReadOnlyFile(file),
PresentationSourceBounds = DeviceInfo.Platform== DevicePlatform.iOS && DeviceInfo.Idiom == DeviceIdiom.Tablet
? new System.Drawing.Rectangle(0, 20, 0, 0)
: System.Drawing.Rectangle.Empty
});
Wszystkie opisane tutaj elementy działają równie dobrze dla Share elementów i Launcher.
Jeśli używasz Xamarin.Forms , możesz przekazać View element i obliczyć granice:
public static class ViewHelpers
{
public static Rectangle GetAbsoluteBounds(this Xamarin.Forms.View element)
{
Element looper = element;
var absoluteX = element.X + element.Margin.Top;
var absoluteY = element.Y + element.Margin.Left;
// Add logic to handle titles, headers, or other non-view bars
while (looper.Parent != null)
{
looper = looper.Parent;
if (looper is Xamarin.Forms.View v)
{
absoluteX += v.X + v.Margin.Top;
absoluteY += v.Y + v.Margin.Left;
}
}
return new Rectangle(absoluteX, absoluteY, element.Width, element.Height);
}
public static System.Drawing.Rectangle ToSystemRectangle(this Rectangle rect) =>
new System.Drawing.Rectangle((int)rect.X, (int)rect.Y, (int)rect.Width, (int)rect.Height);
}
Następnie można go użyć podczas wywoływania metody RequestAsync:
public Command<Xamarin.Forms.View> ShareCommand { get; } = new Command<Xamarin.Forms.View>(Share);
async void Share(Xamarin.Forms.View element)
{
try
{
Analytics.TrackEvent("ShareWithFriends");
var bounds = element.GetAbsoluteBounds();
await Share.RequestAsync(new ShareTextRequest
{
PresentationSourceBounds = bounds.ToSystemRectangle(),
Title = "Title",
Text = "Text"
});
}
catch (Exception)
{
// Handle exception that share failed
}
}
Element wywołujący można przekazać po wyzwoleniu elementu Command :
<Button Text="Share"
Command="{Binding ShareWithFriendsCommand}"
CommandParameter="{Binding Source={RelativeSource Self}}"/>
Różnice między platformami
Zadanie zwrócone od CanOpenAsync razu zostanie ukończone.
interfejs API
Powiązany film wideo
Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.