У меня есть файл, хранящийся в Android проекта, как это:Как найти правильный путь к файлу для assetManager.openFd()?
InputStream in = getResources().openRawResource(id);
OutputStream out = new FileOutputStream(new File(dir, name));
ByteStreams.copy(in, out);
out.flush();
out.close();
Где НАПРАВЛ: /data/user/0/com.aaa.app/files/media
и зовут: my_file
.
Но я получаю FileNotFoundException (брошенный из assetManager.openFd()) при попытке следующего:
private ParcelFileDescriptor getSeekableFileDescriptor() {
Context context = getContext();
AssetManager assetManager = context.getAssets();
AssetFileDescriptor assetFileDescriptor;
ParcelFileDescriptor fileDescriptor = null;
try {
assetFileDescriptor = assetManager.openFd("/data/user/0/com.aaa.app/files/media/my_file");
fileDescriptor = assetFileDescriptor.getParcelFileDescriptor();
return fileDescriptor;
}
catch (IOException e) {
Log.d(TAG, e.toString());
}
return fileDescriptor;
}
Я также попытался прохождения следующего openFd():
"data/user/0/com.aaa.app/files/media/my_file",
"/media/my_file",
"media/my_file",
"/my_file",
"my_file"
Затем я добавил «.pdf» к каждому из вышеперечисленных. Все еще нет успеха. Я получаю FileNotFound для каждого из вышеперечисленных.
'AssetManager' предназначен для открытия активов. 'AssetFileDescriptor' предназначен для активов. Ваш файл не является активом. Почему вы пытаетесь создать 'AssetFileDescriptor'? – CommonsWare
@CommonsWare В конечном счете, я пытаюсь сделать pdf-файл, используя: PdfRenderer renderer = новый PdfRenderer (getSeekableFileDescriptor()); Поэтому я пытаюсь вернуть ParcelFileDescriptor из метода getSeekableFileDescriptor(). Почему вы говорите, что мой файл не является активом? Я не понимаю различия. – Hap