У меня проблемы с использованием карт из недавно выпущенного GDK. По сути, Card.addImage() может принимать только два аргумента: идентификатор ресурса или URI.
В моем случае мне нужно открыть изображение, которое существует как файл, а не как ресурс. Поэтому для целей тестирования я включаю изображения в папку с ресурсами. Попытка получить к ним доступ напрямую из папки ресурсов не удалась, поэтому я копирую их оттуда во внутреннюю память. Как только они скопированы, я генерирую URI из файла и назначаю его карте. Полученная карта показывает серый блок, где должно быть изображение.
String fileName = step.attachment; //of the form, "folder1/images/image1.jpg"
File outFile = new File(getFilesDir()+File.separator+fileName);
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
//check to see if the file has already been cached in internal storage before copying
if(!outFile.exists()) {
FileInputStream inputStream = new FileInputStream(getAssets().openFd(fileName).getFileDescriptor());
FileOutputStream outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
inputChannel = inputStream.getChannel();
outputChannel = outputStream.getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if(inputChannel!=null)
inputChannel.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(outputChannel!=null)
outputChannel.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
card.addImage(Uri.fromFile(outFile));
Трудно диагностировать, потому что я понятия не имею, что делает карта внутри.