2016-06-02 6 views
0

У меня возник вопрос, почему не удается получить доступ к файлу в папке с моими активами?не найден как файл или ресурс в папке с активами

Папка

enter image description here

Мой код

Uri path = Uri.parse("android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf"); 

String newPath = path.toString(); 

Resources res = getResources(); 

try { 

    PdfReader reader = new PdfReader(newPath); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("/sdcard/evidencia.pdf")); 
    AcroFields fields = stamper.getAcroFields(); 

    fields.setField("Referencia", referencia); 

    fields.setField("Fecha y Hora", fechahora); 
    fields.setField("Tipo", tipo); 
    fields.setField("Operacion", operacion); 
    fields.setField("no. tarjeta", tarjeta); 
    fields.setField("vencimiento", vencimiento); 
    fields.setField("monto", monto); 
    fields.setField("concepto", concepto); 
    fields.setField("Nombre", nombre); 
    fields.setField("Autorizacion", autorizacion); 


    stamper.setFormFlattening(true); 
    stamper.close(); 
    reader.close(); 
} catch (Exception e) { 
    Log.e("error: ", e.getMessage()); 
} 

Исключение

java.io.IOException: android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf not found as file or resource. 

ответ

0

У вас здесь несколько проблем.

Во-первых, ресурсы не являются активами. Вы пытаетесь использовать схему android.resource для доступа к активу, как если бы это был необработанный ресурс, и это не сработает.

Во-вторых, вы создаете Uri, а затем конвертируете это в строку, а затем пытаетесь обернуть это в объект File. Это никогда не сработает, для любого типа Uri.

В-третьих, ни ресурсы, ни активы не являются файлами файловой системы устройства. Это файлы в файловой системе вашей машины разработки. Это записи в файле APK на устройстве. Вы не можете получить объект File, указывающий на ресурс или актив.

Использование getAssets() на Context (например, ваш Activity или Service), чтобы получить AssetManager. Затем позвоните по номеру open("comprobante.pdf") по этому адресу AssetManager, чтобы получить InputStream. Передайте это конструктору PdfReader и надейтесь, что ваша библиотека PDF поддерживает InputStream.

Смежные вопросы