[英]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.