Невозможно получить доступ к общему PDF-файлу приложения Adobe в приложении Android - PullRequest
0 голосов
/ 31 августа 2018

Я работаю над процессом разработки приложений для Android и делюсь файлом pdf из приложения Adobe с моим приложением для Android. Я получаю общий URI pdf файла следующим образом

Android.Net.Uri fileuri =
(Android.Net.Uri) Intent.GetParcelableExtra (Intent.ExtraStream);

fileuri я получаю как {content: //com.adobe.reader.fileprovider/root_external/data/data/com.adobe.reader/files/Downloads/sample.pdf}

string filePath = fileuri.Path;

filePath Я получаю как root_external / data / data / com.adobe.reader / files / Download / sample.pdf

File.Exist (filePath) -> возвращает false

Не знаю, в чем именно причина отсутствия доступа к pdf-файлу
помогите, пожалуйста, получить доступ к файлу Adobe в моем приложении для Android

1 Ответ

0 голосов
/ 31 августа 2018

С помощью следующего кода я могу получить общий PDF-файл приложения Adobe в виде потока и сохранить в путь приложения Android

using (var stream = ContentResolver.OpenInputStream(fileuri))
{
       byte[] fileByteArray = ToByteArray(stream); //only once you can read bytes from stream second time onwards it has zero bytes

       string fileDestinationPath ="<path of your destination> "
       convertByteArrayToPDF(fileByteArray, fileDestinationPath);//here pdf copied to your destination path
}
     public static byte[] ToByteArray(Stream stream)
        {
            var bytes = new List<byte>();

            int b;
            while ((b = stream.ReadByte()) != -1)
                bytes.Add((byte)b);

            return bytes.ToArray();
        }

      public static string convertByteArrayToPDF(byte[] pdfByteArray, string filePath)
        {

            try
            {
                Java.IO.File data = new Java.IO.File(filePath);
                Java.IO.OutputStream outPut = new Java.IO.FileOutputStream(data);
                outPut.Write(pdfByteArray);
                return data.AbsolutePath;

            }
            catch (System.Exception ex)
            {
                return string.Empty;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...