У меня есть файл PDF для чтения, но я получаю исключение
System.UnauthorizedAccessException: Доступ к пути "/storage/emulated/0/geometry.pdf" запрещен.
Downloadbtn_click
метод ниже
if (ContextCompat.CheckSelfPermission(this.Context, Manifest.Permission.ReadExternalStorage) != Permission.Granted)
{
ActivityCompat.RequestPermissions(this.Activity, new String[] { Manifest.Permission.ReadExternalStorage }, 1);
}
else
{
var externalPath = global::Android.OS.Environment.ExternalStorageDirectory.Path + "/" + fileName;
//Below line getting exception
System.IO.File.WriteAllBytes(externalPath, PdfBytes);
var pdfPath = Android.Net.Uri.FromFile(new Java.IO.File(externalPath));
Intent intent = new Intent(this.Activity.Intent.Action);
intent.SetDataAndType(pdfPath, "application/pdf");
this.Context.StartActivity(intent);
}
Переопределение OnRequestPermissionsResult
метод
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
{
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case 1:
{
if (grantResults.Length > 0&& grantResults[0] == Permission.Granted)
{
var externalPath = global::Android.OS.Environment.ExternalStorageDirectory.Path + "/" + fileName;
System.IO.File.WriteAllBytes(externalPath, bt);
var pdfPath = Android.Net.Uri.FromFile(new Java.IO.File(externalPath));
Intent intent = new Intent(this.Activity.Intent.Action);
this.Context.StartActivity(intent);
}
return;
}
}
}
Файл манифеста
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Метод OnRequestPermissionsResult
никогда не вызывается.При нажатии на кнопку «Загрузить» элемент управления непосредственно переходит к else
детали, поскольку разрешение уже предоставлено в файле Menifest.xml
.
Исключение составляет
System.IO.File.WriteAllBytes(externalPath, PdfBytes);
Как решить эту раздражающую проблему.