Using assets in Android

Android offers one more directory where you can keep files which also will be included in package. This directory called /assets. The difference between /res and /assets is that Android doesn’t generate IDs for assets content. You need to specify relative path and name for files inside /assets. I am going to show simple example which shows how you can access /assets content.
For this operation need to use AssetManager:

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

/**
 * Class which shows how to use assets
 *
 * @author FaYnaSoft Labs
 */
public class Main extends Activity {
	private EditText firstField;
	private EditText secondField;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		AssetManager assetManager = getAssets();
		String[] files = null;
		try {
			files = assetManager.list("image");
		} catch (IOException e) {
			Log.e("tag", e.getMessage());
		}
		firstField = (EditText) findViewById(R.id.firstId);
		firstField.setText(Integer.toString(files.length) + " file. File name is "
				+ files[0]);
		InputStream inputStream = null;
		try {
			inputStream = assetManager.open("readme.txt");
		} catch (IOException e) {
			Log.e("tag", e.getMessage());
		}

		String s = readTextFile(inputStream);
		secondField = (EditText) findViewById(R.id.secondId);
		secondField.setText(s);
	}

	/**
	 * This method reads simple text file
	 * @param inputStream
	 * @return data from file
	 */
	private String readTextFile(InputStream inputStream) {
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		byte buf[] = new byte[1024];
		int len;
		try {
			while ((len = inputStream.read(buf)) != -1) {
				outputStream.write(buf, 0, len);
			}
			outputStream.close();
			inputStream.close();
		} catch (IOException e) {
		}
		return outputStream.toString();
	}
}

In folder /assets i created folder /image and put icon.png from /drawable. And also I created simple readme.txt with text Hello, World!
I used

AssetManager assetManager = getAssets();

for accessing to /assets folder.

As you can see it is simple.

Share

5 comments to Using assets in Android

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.