簡體   English   中英

Xamarin.Forms - 使用默認應用打開文件

[英]Xamarin.Forms - Open file with default app

我需要從存儲中打開一個文件。 我使用Launcher.OpenAsync() ,但它總是嘗試在 PDF 閱讀器中打開文件。 有沒有其他方法可以在 Android 上使用默認應用程序打開文件?

這是我已經嘗試過的代碼。

private void OpenDocument(string filePath)
{
    var localFile = "file://" + filePath;
    Launcher.OpenAsync(localFile);
}
string path = "your uri bla-bla-bla";

 Launcher.OpenAsync
                (new OpenFileRequest()
                {
                    File = new ReadOnlyFile(path)
                }
            );
//Dictionary with extensions static private Dictionary<string, string> filesType = new Dictionary<string, string> { { ".doc", "application/msword" }, { ".jpg", "image/jpeg" }, { ".jpeg", "image/jpeg" }, { ".log", "text/plain" }, { ".mp3", "audio/mp3" }, { ".mp4", "video/mp4" }, { ".pdf", "application/pdf" }, { ".png", "image/png" }, { ".rar", "application/x-rar-compressed" }, { ".rtf", "application/rtf" }, { ".txt", "text/plain" }, { ".zip", "application/zip" }, }; //Open document static public void OpenDocument(string filePath) { var localFile = "file://" + filePath; Intent intent = new Intent(); intent.AddFlags(ActivityFlags.NewTask); intent.SetAction(Intent.ActionView); string type = GetType(filePath); intent.SetDataAndType(Android.Net.Uri.Parse(localFile), type); Android.App.Application.Context.StartActivity(intent); } //Get file extesion static private string GetType(string filePath) { string extinsion = ""; for (int i = filePath.Length - 1; i >= 0; i--) { if (filePath[i] != '.') extinsion += filePath[i]; else break; } string reversedExtinson = "."; for (int i = extinsion.Length - 1; i >= 0; i--) reversedExtinson += extinsion[i]; return filesType[reversedExtinson]; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM