Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get file name from file path in android

I want to get file name from sdcard file path. e.g. :/storage/sdcard0/DCIM/Camera/1414240995236.jpg I want get 1414240995236.jpg I have written the code to fetch the same but it is not working. Please help.
Below is my code:

@Override protected void onActivityResult( int requestCode, int resultCode, Intent data) {     if ( requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {          if ( resultCode == RESULT_OK) {              /*********** Load Captured Image And Data Start ****************/              String imageId = convertImageUriToFile( imageUri,CameraActivity);               //  Create and excecute AsyncTask to load capture image              new LoadImagesFromSDCard().execute(""+imageId);              /*********** Load Captured Image And Data End ****************/           } else if ( resultCode == RESULT_CANCELED) {              Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show();         } else {              Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show();         }     } }   /************ Convert Image Uri path to physical path **************/  public static String convertImageUriToFile ( Uri imageUri, Activity activity )  {      Cursor cursor = null;     int imageID = 0;      try {          /*********** Which columns values want to get *******/         String [] proj={                 MediaStore.Images.Media.DATA,                 MediaStore.Images.Media._ID,                 MediaStore.Images.Thumbnails._ID,                 MediaStore.Images.ImageColumns.ORIENTATION         };          cursor = activity.managedQuery(                  imageUri,         //  Get data for specific image URI                 proj,             //  Which columns to return                 null,             //  WHERE clause; which rows to return (all rows)                 null,             //  WHERE clause selection arguments (none)                 null              //  Order-by clause (ascending by name)                  );          //  Get Query Data          int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);         int columnIndexThumb = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);         int file_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);          //int orientation_ColumnIndex = cursor.         //    getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION);          int size = cursor.getCount();          /*******  If size is 0, there are no images on the SD Card. *****/          if (size == 0) {               imageDetails.setText("No Image");         }         else         {              int thumbID = 0;             if (cursor.moveToFirst()) {                  /**************** Captured image details ************/                  /*****  Used to show image on view in LoadImagesFromSDCard class ******/                 imageID     = cursor.getInt(columnIndex);                  thumbID     = cursor.getInt(columnIndexThumb);                  String Path = cursor.getString(file_ColumnIndex);                  //String orientation =  cursor.getString(orientation_ColumnIndex);                  String CapturedImageDetails = " CapturedImageDetails : \n\n"                         +" ImageID :"+imageID+"\n"                         +" ThumbID :"+thumbID+"\n"                         +" Path :"+Path+"\n";                 full_path_name=Path;           //this is my path          //Path :/storage/sdcard0/DCIM/Camera/1414240995236.jpg  i want get 1414240995236.jpg                         // Show Captured Image detail on activity                 imageDetails.setText(Path);              }         }        } finally {         if (cursor != null) {             cursor.close();         }     }      // Return Captured Image ImageID ( By this ImageID Image will load from sdcard )      return ""+imageID; }   /**  * Async task for loading the images from the SD card.  *  * @author Android Example  *  */  // Class with extends AsyncTask class  public class LoadImagesFromSDCard  extends AsyncTask<String, Void, Void> {      private ProgressDialog Dialog = new ProgressDialog(CameraPhotoCapture.this);      Bitmap mBitmap;      protected void onPreExecute() {         /****** NOTE: You can call UI Element here. *****/          // Progress Dialog         Dialog.setMessage(" Loading image from Sdcard..");         Dialog.show();     }       // Call after onPreExecute method     protected Void doInBackground(String... urls) {          Bitmap bitmap = null;         Bitmap newBitmap = null;         Uri uri = null;                 try {              /**  Uri.withAppendedPath Method Description              * Parameters              *    baseUri  Uri to append path segment to              *    pathSegment  encoded path segment to append              * Returns              *    a new Uri based on baseUri with the given segment appended to the path              */              uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + urls[0]);              /**************  Decode an input stream into a bitmap. *********/             bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));              if (bitmap != null) {                  /********* Creates a new bitmap, scaled from an existing bitmap. ***********/                  newBitmap = Bitmap.createScaledBitmap(bitmap, 170, 170, true);                  bitmap.recycle();                  if (newBitmap != null) {                      mBitmap = newBitmap;                 }             }         } catch (IOException e) {             // Error fetching image, try to recover              /********* Cancel execution of this task. **********/             cancel(true);         }          return null;     }       protected void onPostExecute(Void unused) {          // NOTE: You can call UI Element here.          // Close progress dialog         Dialog.dismiss();          if(mBitmap != null)         {             // Set Image to ImageView               showImg.setImageBitmap(mBitmap);         }       }  } 
like image 611
Manikandan K Avatar asked Oct 26 '14 05:10

Manikandan K


People also ask

How do I find the filename of a file?

To extract filename from the file, we use “GetFileName()” method of “Path” class. This method is used to get the file name and extension of the specified path string. The returned value is null if the file path is null. Syntax: public static string GetFileName (string path);

How do I get files from Mediastore on Android?

Uri uri = data. getData(); File file = new File(uri. getPath());//create path from uri final String[] split = file. getPath().

How can I get file type in Android?

To get the data type of a shared file given its content URI, the client app calls ContentResolver. getType() . This method returns the file's MIME type. By default, a FileProvider determines the file's MIME type from its filename extension.


1 Answers

I think you can use substring method to get name of the file from the path string.

String path=":/storage/sdcard0/DCIM/Camera/1414240995236.jpg";  // it contains your image path...I'm using a temp string... String filename=path.substring(path.lastIndexOf("/")+1); 
like image 162
fatboy Avatar answered Sep 22 '22 16:09

fatboy