我有一个问题,为什么无法访问我的资源文件夹中的文件?
文件夹
我的代码
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 :(得分:0)
这里有一些问题。
首先,资源不是资产。您正在尝试使用android.resource
方案来访问资产,就像它是原始资源一样,这不起作用。
其次,您正构建一个Uri
,然后将其转换为字符串,然后尝试将其包装在File
对象中。对于任何类型的Uri
,这都行不通。
第三,资源和资产都不是设备文件系统上的文件。它们是开发计算机文件系统上的文件。它们是设备上APK文件中的条目。您无法获得指向资源或资产的File
对象。
在getAssets()
上使用Context
(例如,您的Activity
或Service
)获取AssetManager
。然后,在open("comprobante.pdf")
上致电AssetManager
,获取资产上的InputStream
。将其传递给PdfReader
构造函数,并希望您的PDF库支持InputStream
。