Gayan Dinuzhka
Gayan Dinuzhka

Reputation: 331

Get absolute path of android drawable image

I need to get the absolute path or the File object of my drawable image in android application. Is there any way to do this?

Drawable is as following

context.getResources().getDrawable(R.drawable.back_button)

Upvotes: 2

Views: 34401

Answers (3)

Nikhil Borad
Nikhil Borad

Reputation: 2085

Uri path = Uri.parse("android.resource://com.nikhil.material/" + R.drawable.image);

OR

Uri otherPath = Uri.parse("android.resource://com.nikhil.material/drawable/image");

OR

Uri path = Uri.parse("android.resource://"+BuildConfig.APPLICATION_ID+"/" + R.drawable.image);

Upvotes: 7

KOTIOS
KOTIOS

Reputation: 11194

If you app is insalled on sdcard try this code :

Bitmap bitMap = BitmapFactory.decodeResource(getResources(),R.id.img1);

File mFile1 = Environment.getExternalStorageDirectory();

String fileName ="img1.jpg";

File mFile2 = new File(mFile1,fileName);
try {
       FileOutputStream outStream;

       outStream = new FileOutputStream(mFile2);

       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);

       outStream.flush();

       outStream.close();

} catch (FileNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
} catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
}

String sdPath = mFile1.getAbsolutePath().toString()+"/"+fileName;

Log.i("hiya", "Your IMAGE ABSOLUTE PATH:-"+sdPath); 

File temp=new File(sdPath);

if(!temp.exists()){
       Log.e("file","no image file at location :"+sdPath);
}

Upvotes: 7

Farai
Farai

Reputation: 190

drawable resources are added to binary at run time therefore cannot be accessed by path. you can decode and use drawables instead.

If you need resources you can access at runtime by path, try using assets folder instead.

Hope this is helpful

Upvotes: 3

Related Questions