簡體   English   中英

從 Xamarin 中外部 SD 卡上的 URI 獲取路徑

[英]Get path from URI on external sd-card in Xamarin

我剛剛開始使用 Xamarin,我對 Android 的經驗有限。

我已經使用 ActionOpenDocumentTree 觸發並意圖為我的應用程序獲取文件的“保存路徑”。 典型的選擇器是這樣的

從 DocumentTree 收到的 Uri 是這樣形成的: content://com.android.externalstorage.documents/tree/12FB-3215%3ATest

這是我使用的函數,它來自 Filepicker-code:

    public static string GetActualPathFromFile(Context thisContext, Android.Net.Uri uri)
    {
        bool isKitKat = Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat;

        if (isKitKat && DocumentsContract.IsDocumentUri(thisContext, uri))
        {
            // ExternalStorageProvider
            if (isExternalStorageDocument(uri))
            {
                string docId = DocumentsContract.GetDocumentId(uri);

                char[] chars = { ':' };
                string[] split = docId.Split(chars);
                string type = split[0];

                if ("primary".Equals(type, StringComparison.OrdinalIgnoreCase))
                {
                    return Android.OS.Environment.ExternalStorageDirectory + "/" + split[1];
                }

                //How to handle other than primary?

在這種情況下,變量“type”是“12FB-3215”而不是“primary”,所以它不會被處理。

當我選擇內部存儲時,我得到了 Uri content://com.android.externalstorage.documents/tree/primary%3ATest然后給出了 /storage/emulated/0/Test 的路徑,因為類型被設置為“主要”。

那么 ID 為 12FB-3215 的 SD 卡的正確路徑是什么? 是 /storage/12FB-3215/Test 還是 /storage/emulated/12FB-3215/Test ?

對於沒有經驗的 Android 編碼員有什么好的建議嗎?

在 Xamarin 中,您可以使用我的庫訪問 android 上的任何存儲。 但適用於支持 Storage-Access-Frameword (SAF) https://github.com/madnik7/PortableStorage 的Android 5+

暫無
暫無

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

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