Xamarin.Essentials: Başlatıcı
Başlatıcı sınıfı, bir UYGULAMANıN bir URI 'yi sistem tarafından açmasına olanak sağlar. Bu, genellikle başka bir uygulamanın özel URI düzenlerine derinlemesine bağlantı oluşturulurken kullanılır. Tarayıcıyı bir Web sitesine açmak istiyorsanız tarayıcı API 'sine başvurmalısınız.
başlarken
Bu API 'yi kullanmaya başlamak için, kitaplığın projelerinizde düzgün bir şekilde yüklendiğinden ve ayarlandığından emin olmak için Başlarken Kılavuzunu okuyun.
Başlatıcısı kullanma
Sınıfınıza bir başvuru ekleyin Xamarin.Essentials :
using Xamarin.Essentials;
Başlatıcı işlevselliğini kullanmak için OpenAsync yöntemini çağırın ve bir string veya açmak için bir veya geçirin Uri . İsteğe bağlı olarak, bu CanOpenAsync Yöntem, URI şemasının cihazdaki bir uygulama tarafından işlenebileceğini denetlemek için kullanılabilir.
public class LauncherTest
{
public async Task OpenRideShareAsync()
{
var supportsUri = await Launcher.CanOpenAsync("lyft://");
if (supportsUri)
await Launcher.OpenAsync("lyft://ridetype?id=lyft_line");
}
}
Bu, ile tek bir çağrıda birleştirilebilir ve bu, TryOpenAsync parametrenin açılıp açılmadığını ve açık olup olmadığını denetler.
public class LauncherTest
{
public async Task<bool> OpenRideShareAsync()
{
return await Launcher.TryOpenAsync("lyft://ridetype?id=lyft_line");
}
}
Ek Platform Kurulumu
Dosyalar
Bu özellikler, bir uygulamanın bir dosyayı açmak ve görüntülemek için başka uygulamalar istemesine olanak sağlar. Xamarin.Essentials dosya türü (MIME) otomatik olarak algılanır ve açılacak dosyayı ister.
Aşağıda, diske metin yazma ve açılmasını isteme örneği verilmiştir:
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)
});
Dosyalar açılırken sunum konumu
Idos üzerinde bir paylaşma veya açma başlatıcısı isteğinde bulunduğunda, bir pop denetimi üzerinde sunma olanağınız vardır. Bu, pop 'un nereden görüneceğini ve doğrudan bir ok işaret olacağını belirtir. Bu konum genellikle eylemi başlatan denetimdir. Özelliğini kullanarak konumu belirtebilirsiniz PresentationSourceBounds :
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
});
Burada açıklanan her şey ve için eşit olarak çalışmaktadır ShareLauncher .
Kullanıyorsanız, Xamarin.Forms bir View ve sınırlarını hesaplayabilirsiniz:
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);
}
Bu, daha sonra çağrılırken kullanılabilir 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
}
}
Tetiklendiğinde çağırma öğesini geçirebilirsiniz Command :
<Button Text="Share"
Command="{Binding ShareWithFriendsCommand}"
CommandParameter="{Binding Source={RelativeSource Self}}"/>
Platform farkları
API
- Xamarin. Essentials /Launcher "Data-LinkType =" external ">Başlatıcı kaynak kodu
- Başlatıcı API belgeleri