Android saving file to external storage

后端 未结 12 852
抹茶落季
抹茶落季 2020-11-22 03:12

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         


        
12条回答
  •  醉梦人生
    2020-11-22 03:58

    I have created an AsyncTask for saving bitmaps.

    public class BitmapSaver extends AsyncTask
    {
        public static final String TAG ="BitmapSaver";
    
        private Bitmap bmp;
    
        private Context ctx;
    
        private File pictureFile;
    
        public BitmapSaver(Context paramContext , Bitmap paramBitmap)
        {
            ctx = paramContext;
    
            bmp = paramBitmap;
        }
    
        /** Create a File for saving an image or video */
        private  File getOutputMediaFile()
        {
            // To be safe, you should check that the SDCard is mounted
            // using Environment.getExternalStorageState() before doing this. 
            File mediaStorageDir = new File(Environment.getExternalStorageDirectory()
                    + "/Android/data/"
                    + ctx.getPackageName()
                    + "/Files"); 
    
            // This location works best if you want the created images to be shared
            // between applications and persist after your app has been uninstalled.
    
            // Create the storage directory if it does not exist
            if (! mediaStorageDir.exists()){
                if (! mediaStorageDir.mkdirs()){
                    return null;
                }
            } 
            // Create a media file name
            String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
            File mediaFile;
                String mImageName="MI_"+ timeStamp +".jpg";
                mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);  
            return mediaFile;
    
        } 
        protected Void doInBackground(Void... paramVarArgs)
        {   
            this.pictureFile = getOutputMediaFile();
    
            if (this.pictureFile == null) { return null; }
    
            try
            {
                FileOutputStream localFileOutputStream = new FileOutputStream(this.pictureFile);
                this.bmp.compress(Bitmap.CompressFormat.PNG, 90, localFileOutputStream);
                localFileOutputStream.close();
            }
            catch (FileNotFoundException localFileNotFoundException)
            {
                return null;
            }
            catch (IOException localIOException)
            {
            }
            return null;
        }
    
        protected void onPostExecute(Void paramVoid)
        {
            super.onPostExecute(paramVoid);
    
            try
            {
                //it will help you broadcast and view the saved bitmap in Gallery
                this.ctx.sendBroadcast(new Intent("android.intent.action.MEDIA_MOUNTED", Uri
                        .parse("file://" + Environment.getExternalStorageDirectory())));
    
                Toast.makeText(this.ctx, "File saved", 0).show();
    
                return;
            }
            catch (Exception localException1)
            {
                try
                {
                    Context localContext = this.ctx;
                    String[] arrayOfString = new String[1];
                    arrayOfString[0] = this.pictureFile.toString();
                    MediaScannerConnection.scanFile(localContext, arrayOfString, null,
                            new MediaScannerConnection.OnScanCompletedListener()
                            {
                                public void onScanCompleted(String paramAnonymousString ,
                                        Uri paramAnonymousUri)
                                {
                                }
                            });
                    return;
                }
                catch (Exception localException2)
                {
                }
            }
        }
    }
    

提交回复
热议问题