Nagendra Babu Korlakunta Ответов: 1

Невозможно получить доступ к общему pdf файлу приложения adobe в приложении android


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

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

    fileuri i am getting as {content://com.adobe.reader.fileprovider/root_external/
                                        data/data/com.adobe.reader/files/Downloads/sample.pdf}

    string filePath = fileuri.Path;

   filePath I am gettings as root_external/data/data/com.adobe.reader/files/Download/sample.pdf

    File.Exist(filePath)--> returns false


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

Что я уже пробовал:

файл URI который получает от Adobe application не может получить доступ в моем приложении

Richard MacCutchan

Возможно, файл не существует в этом месте, или root_external не существует на устройстве Android. Только вы можете найти ответ, так как у нас нет доступа к вашей системе(системам).

1 Ответов

Рейтинг:
1

Nagendra Babu Korlakunta

С помощью следующего кода я могу получить общий pdf-файл adobe application в виде потока и сохранить его в пути приложения 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;
            }
        }