Store and use files in Assets
There are times when you probably want to your application distribution with raw resources, instead of pre-defined resources, the ‘res‘ folder, you gonna have to make use of ‘Asset‘.
‘Assets’ folder will be distributed along with the APK, which contains all the raw files you need for application, such as: text files (.txt), non-Android XML files (.xml), Audio files (.wav, .mp3, .mid)…; those cannot be put into ‘res‘ folder as usual.
Thing needed to be looked up here: AssetManager from Android Developers’ References
This class does the job that we need.
First, create a project as usual, then put files into ‘asset‘ like below:
Now, create a simple layout containing a TextView for displaying the content of ‘text.txt‘ and an ImageView for displaying the image ‘avatar.jpg’, which are put in Asset.
The implementation quite easy using AssetManager as mentioned above.
package pete.android.study; import java.io.IOException; import java.io.InputStream; import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; public class Main extends Activity { ImageView mImage; TextView mText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mImage = (ImageView)findViewById(R.id.image); mText = (TextView)findViewById(R.id.text); loadDataFromAsset(); } public void loadDataFromAsset() { // load text try { // get input stream for text InputStream is = getAssets().open("text.txt"); // check size int size = is.available(); // create buffer for IO byte[] buffer = new byte[size]; // get data to buffer is.read(buffer); // close stream is.close(); // set result to TextView mText.setText(new String(buffer)); } catch (IOException ex) { return; } // load image try { // get input stream InputStream ims = getAssets().open("avatar.jpg"); // load image as Drawable Drawable d = Drawable.createFromStream(ims, null); // set image to ImageView mImage.setImageDrawable(d); } catch(IOException ex) { return; } } }
That’s a quick sample code giving this result.
The distributed APK file contains the folder ‘assets‘, you might wanna check by opening it.
Quite easy, isn’t it?
@p/s: you can load image from Asset into Bitmap by using BitmapFactory.decodeStream(), instead of using Drawable.
Have fun w/ Android Coding 🙂
Cheers,
Pete Houston
I’ll post a hyperlink to this webpage on my blog site. I’m certain my guests will locate that extremely handy.
amazing problems entirely, you only acquired a new readers. What would Store and use files in Assets | [ Android Newbie ] anyone advise regarding your publish that you created a week back? Just about any certain?. Poker online http://www.feraripoker.org/
My boyfriend introduced me to your articles. Right here is some really useful info. You have a lot of knowledge on this subject. In my view, if all webmasters and bloggers made just right content material as you did, the web might be a lot more helpful than ever before.
I shared this on WordPress. Try to make the guest posts as good as possible by promoting and dropping links. Are there other articles you work on? I am continually browsing online for tips that can help me.
I am bored to death at work so I decided to browse your post on my iphone during lunch break. I really like your write up. Your blogs is good!
cool post. Interesting post. I really like your posts but… I am super dyslexic. Do you have Youtube videos on the subject?
how to take video from assets plz help me
my imgae in subfolder in assets so what to do?
i alreasy try.. InputStream ims = getAssets().open(“subfolder/avatar.jpg”);
but its not working 😦
Thank you very much I was really helpful…
:
how to get asset file path for uploading image in asset folder.
connection.setRequestProperty(“uploaded_file”,selectedFilePath);
// connection.setRequestProperty(picture,selectedFilePath);
AppLog.d(“dooth-prefrences”,”picture params”+ pictureParams);
//creating new dataoutputstream
dataOutputStream = new DataOutputStream(connection.getOutputStream());
//writing bytes to data outputstream
dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
dataOutputStream.writeBytes(“Content-Disposition: form-data; name=\””+pictureParams+”\”;filename=\””
+ selectedFilePath + “\”” + lineEnd);
AppLog.d(“dooth-preferences”,”path:”+selectedFilePath+”\””+lineEnd);
I think this website holds some really fantastic info for everyone :D. “The test of every religious, political, or educational system is the man that it forms.” by Henri Frdric Amiel.
Thanks for this post this was very helpful!
how about with multiple image ? thanks
Works Good !!!
Thanks
how to open pdf file from assets folder…….. plz help……….
thanks is very useful for me
You should not use the function available()!
Documentation:
* the result is a conservative estimate and may be significantly smaller than the actual number of bytes available.*
Reblogged this on Sxx520's Blog and commented:
see see
Nice info dude 🙂
http://alienkomputer.com/blog/yes-akhirnya-android-studio-1-0-stable-rilis/
Reblogged this on weathercode.
Большое спасибо, очень помог ваш урок.
Hey man, thanks very much! Assets are nice for many purposes!
Thanks a lot. It is 2 days that I’m search internet to find where should I put my test file.
Thanks a lot.
awesome
R.id.text show error
good work. . . . .
how if I want to use it in XML layout instead of from java? thanks
Thankx for sharing your knowledge. Also, i have one question? is that possible to add some images into Assets at Run time and load that images?
Hi,can you tell me how should i do if there are two or more folder inside assets?
i want to display images from aasets in the list view…plz tell how it will???
Thank you Pete. Simple, very clear example….
Hi pete, thank you for the tutorial. I encountered an “out of memory error” when i tried to implement this. The image file I’m trying to display is 23.1kb with dimensions 318×333. I encounter the same error when i try to use BitmapFactory.decode stream. Is there any way around this without having to scale down the image file
Can you give me the .xml file to display the textview and imageview am a not a Pro
Can you give me the .xml file to display the textview and imageview am a not a Pro
Can you help me?
Loading files kml from the Raw folders ! How?
Thank you,
What directory is talking about.
Because the menu Window> ShowView> Other … > File Explorer is a directory with the path data / data / application packages would be this external directory?
I can pull a file from that directory component webview? example: webview.loadUrl (“file / / data / data / pages_web / examples / / index.html”);
I can create a directory within a file and save it as?
He understood my question, I just need to know to create directories and write files htmls updated inside.
how do I write to a file in the Asset and can say the name of the directory and file name? HELP ME
Sorry, you can’t do that, directory is where you put all necessary stuffs for your apps and packing the final APK.
Just make copy of a file in your and write/read to your internal storage in run-time…it’s totally fine.