Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android saving file to external storage

I have a little issue with creating a directory and saving a file to it on my android application. I'm using this piece of code to do this :

String filename = "MyApp/MediaTag/MediaTag-"+objectId+".png"; File file = new File(Environment.getExternalStorageDirectory(), filename); FileOutputStream fos;  fos = new FileOutputStream(file); fos.write(mediaTagBuffer); fos.flush(); fos.close(); 

But it's throwing an exception :

java.io.FileNotFoundException: /mnt/sdcard/MyApp/MediaCard/MediaCard-0.png (No such file or directory)

on that line : fos = new FileOutputStream(file);

If I set the filename to : "MyApp/MediaTag-"+objectId+" it's working, but If I try to create and save the file to an another directory it's throwing the exception. So any ideas what I'm doing wrong?

And another question: Is there any way to make my files private in external storage so user can't see them in gallery, only if he connect his device as Disk Drive?

like image 771
Android-Droid Avatar asked Oct 25 '11 09:10

Android-Droid


People also ask

What is the external storage on Android?

In general there are two types of External Storage: Primary External Storage: In built shared storage which is “accessible by the user by plugging in a USB cable and mounting it as a drive on a host computer”. Example: When we say Nexus 5 32 GB. Secondary External Storage: Removable storage.

How do I find manage external storage on Android?

Request All files accessDeclare the MANAGE_EXTERNAL_STORAGE permission in the manifest. Use the ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION intent action to direct users to a system settings page where they can enable the following option for your app: Allow access to manage all files.


1 Answers

Use this function to save your bitmap in SD card

private void SaveImage(Bitmap finalBitmap) {      String root = Environment.getExternalStorageDirectory().toString();     File myDir = new File(root + "/saved_images");          if (!myDir.exists()) {                     myDir.mkdirs();                 }     Random generator = new Random();     int n = 10000;     n = generator.nextInt(n);     String fname = "Image-"+ n +".jpg";     File file = new File (myDir, fname);     if (file.exists ())       file.delete ();      try {         FileOutputStream out = new FileOutputStream(file);         finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);         out.flush();         out.close();      } catch (Exception e) {          e.printStackTrace();     } } 

and add this in manifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

EDIT: By using this line you will be able to see saved images in the gallery view.

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,                          Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

look at this link also http://rajareddypolam.wordpress.com/?p=3&preview=true

like image 114
RajaReddy PolamReddy Avatar answered Oct 17 '22 12:10

RajaReddy PolamReddy