android - Xamarin Forms Android 无法从图库或 App 文件夹中删除图像,且不显示错误
问题描述
我有一个 Xamarin Forms Android 应用程序,我无法使用该应用程序从图库或应用程序文件夹中删除图像。失败后不显示错误。我的目标是 Android 10.0。相关代码如下:
\界面
using System;
using System.Collections.Generic;
using System.Text;
namespace TCmTickets
{
public interface IDeleteFromFile
{
void DeleteFile(string source);
}
}
\班级
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.IO;
using Xamarin.Forms;
[assembly: Dependency(typeof(TCmTickets.Droid.DeleFromFile))]
namespace TCmTickets.Droid
{
class DeleFromFile : IDeleteFromFile
{
public void DeleteFile(string source)
{
File.Delete(source);
}
}
}
\主要活动
DependencyService.Register <DeleFromFile>();
DependencyService.Get<DeleFromFile>();
\功能
private async void DeleteFileTest()
{
var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
{
PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
});
if (file != null)
{
if (File.Exists(file.Path))
{
DependencyService.Get<IDeleteFromFile>().DeleteFile(file.Path);
}
file.Dispose();
}
}
void btnDeleteFile_Clicked(object sender, EventArgs e)
{
DeleteFileTest();
}
这可能与 Android 10 有关吗?我使用了正确的权限 - 我在 Android Manifest 中包含以下内容
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.TCmTickets" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="25" android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:label="TCmTickets.Android" android:requestLegacyExternalStorage="true">
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxxx" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<uses-library android:name="org.apache.http.legacy" android:required="false" />
</application>
</manifest>
解决方案
推荐阅读
- javascript - 获取请求和状态更改后如何重新渲染组件?
- jquery - 如何检测用户何时放大 Web 应用程序
- database - 为什么每次关闭特定表单时我的 MS Access 数据库都会崩溃?
- php - 如何编译具有 html 元素的字符串以在 Web 上显示
- angularjs - 在指令中是否可以使用字符串值定位范围上的变量?
- python - 如何在python中绘制速度热图
- ruby-on-rails - Sidekiq 日志级别未在生产中设置
- iis - 请求等待时间/第一个字节的时间
- arrays - 获取 2 个输入日期之间的月份名称并将它们放入数组中
- django - 使用 Django/JavaScript 在 HTML 表中渲染 JSON