簡體   English   中英

訪問路徑...被拒絕 - Xamarin Android

[英]Access to the path ... is denied - Xamarin Android

我正在嘗試將圖像寫入我的 android 文件系統,但是在嘗試寫入字節時,出現上述錯誤。

我正在運行 Visual Studio 2019(以管理員身份)並針對 API 級別 29

AndroidManifest.xml

我的外部存儲權限存在於我的清單文件中:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

根據另一個建議,我在我的應用程序標簽中添加了android:requestLegacyExternalStorage="true"

<application android:label="App Name" android:icon="@mipmap/launcher_foreground" android:extractNativeLibs="true" android:requestLegacyExternalStorage="true">

主Activity.cs

在這里,我在應用程序啟動時請求權限並在兩個提示上按允許:

int requestPermissions = 0;
string cameraPermission = Android.Manifest.Permission.Camera;
string filePermission = Android.Manifest.Permission.WriteExternalStorage;

if (!(ContextCompat.CheckSelfPermission(this, cameraPermission) == (int)Permission.Granted) || !(ContextCompat.CheckSelfPermission(this, filePermission) == (int)Permission.Granted))
        {
           ActivityCompat.RequestPermissions(this, new String[] { cameraPermission, filePermission 
        }, requestPermissions);
}

保存媒體文件

我在File.WriteAllBytes上收到錯誤File.WriteAllBytes

public string SavePickedPhoto(Stream file, string fileName)
{
        var bytes = GetBytesFromStream(file);
        string path = Path.Combine(Android.App.Application.Context.GetExternalFilesDir("").AbsolutePath + "PhotoDirectoryForApp";

        if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);

                }
                catch (Exception e)
                {


                }

            }
        Path.Combine(path, fileName);

        try
        {
            File.WriteAllBytes(path, bytes);

        }
        catch (Exception ex)
        {

        }

        return path;

}

對於接下來要嘗試的內容,我有點不知所措,似乎我應該擁有將文件寫入設備上的文件夾所需的權限。 我還嘗試了不同的位置來保存到相同的結果和保存方法。

提前致謝

您正在嘗試寫入目錄,因為您正在丟棄Path.Combine的返回值:

Path.Combine(path, fileName);

嘗試:

~~~
path = Path.Combine(path, fileName);
~~~

暫無
暫無

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

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