Как получить файловый экземпляр drawable?
Ниже приведен код, который я справляюсь с печатью логотипа. Логотип помещается в папку res/drawable. Когда я запускаю приложение, оно бросает:
java.io.FileNotFoundException: /android.resource:/com.android.test/2130837505 (No such file or directory).
какие-либо советы?
public boolean printLogo()
{
Uri logo_path = Uri.parse("android.resource://com.android.test/" + R.drawable._logo);
File logo = new File(logo_path.toString());
byte[] logo_bytes = new byte[(int) logo.length()];
System.out.print("Length:" + logo.length());
FileInputStream fs;
try {
fs = new FileInputStream(logo);
fs.read(logo_bytes);
fs.close();
mChatService.write(logo_bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return true;
}
2 ответов
да, вы должны добавить ресурс такого типа в assets или raw directory...
а если вы have any limitation
ans вам нужен только массив байтов может попробовать
Bitmap bmp= BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_resource);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
сначала поместите ресурсы изображения в папку assets, а затем используйте AssetManager
для получения InputStream
от ресурса.
AssetManager mgr = context.getAssets();
FileInputStream fin = (FileInputStream)mgr.open("path/filename");
path
не должно содержать папку assets.