我正试图将图像写入我的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);
~~~