访问路径..被拒绝-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">

MainActivity.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);
}

SaveMedia.cs

我在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);
~~~

最新更新