如何在Android中获取图片路径

  介绍

这期内容当中小编将会给大家带来有关如何在Android中获取图片路径,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>权限

& lt; uses-permission  Android: name=癮ndroid.permission.READ_EXTERNAL_STORAGE",/比;   & lt; uses-permission  android: name=癮ndroid.permission.WRITE_EXTERNAL_STORAGE",/在

<强>动态申请权限

String [], mPermissionList =, new  String [] {   ,,Manifest.permission.WRITE_EXTERNAL_STORAGE,   ,,Manifest.permission.READ_EXTERNAL_STORAGE};   ,public  static  final  int  REQUEST_PICK_IMAGE =, 11101;

<>强打开手机相册

ActivityCompat.requestPermissions (MainActivity.this, mPermissionList,, 100); @Override   ,public  void  onRequestPermissionsResult (int  requestCode, @NonNull  String[],权限,@NonNull  int [], grantResults), {   super.onRequestPermissionsResult才能(requestCode,权限,grantResults);   switch 才能;(requestCode), {   ,,case  100:   ,,,boolean  writeExternalStorage =, grantResults [0],==, PackageManager.PERMISSION_GRANTED;   ,,,boolean  readExternalStorage =, grantResults [1],==, PackageManager.PERMISSION_GRANTED;   ,,,if  (0, grantResults.length 的在,,,,,writeExternalStorage ,,, readExternalStorage), {   ,,,,getImage ();   ,,,},{else    ,,,,Toast.makeText(,,,请设置必要权限“,,Toast.LENGTH_SHORT),告诉();   ,,,}      ,,,休息;   ,,}   ,}      ,private  void  getImage (), {   if 才能;(Build.VERSION.SDK_INT  & lt;, Build.VERSION_CODES.KITKAT), {   ,,startActivityForResult (new 意图(Intent.ACTION_GET_CONTENT) .setType(“图像/*“),   ,,,,REQUEST_PICK_IMAGE);   ,,},{else    ,,Intent  Intent =, new 意图(Intent.ACTION_OPEN_DOCUMENT);   ,,intent.addCategory (Intent.CATEGORY_OPENABLE);   ,,intent.setType(“图像/*“);   ,,startActivityForResult(意图,REQUEST_PICK_IMAGE);   ,,}   以前,}

<强>获取相册返回的Uri

@Override   ,protected  void  onActivityResult (int  requestCode, int  resultCode,, Intent 数据),{   super.onActivityResult才能(requestCode, resultCode,,数据);   if 才能;(resultCode ==, Activity.RESULT_OK), {   ,,switch  (requestCode), {   ,,,case  REQUEST_PICK_IMAGE:   ,,,,if  (data  !=, null), {   ,,,,,String  realPathFromUri =, RealPathFromUriUtils.getRealPathFromUri(这个,,data.getData ());   ,,,,},{else    ,,,,,Toast.makeText(,,“图片损坏,请重新选择“,,Toast.LENGTH_SHORT),告诉();   ,,,,}      ,,,,休息;   ,,}   ,,}   以前,}

这里的data.getData()返回的就是Uri, realPathFromUri为真正路径

<强>获取真正路径

package  com.example.richeditortest;      import  android.annotation.SuppressLint;   import  android.content.ContentUris;   import  android.content.Context;   import  android.database.Cursor;   import  android.net.Uri;   import  android.os.Build;   import  android.provider.DocumentsContract;   import  android.provider.MediaStore;      public  class  RealPathFromUriUtils  {/* *   *,才能根据Uri获取图片的绝对路径   ,*   *,才能@param  context 上下文对象   *,才能@param  uri ,图片的Uri   *,才能@return 如果Uri对应的图片存在,,那么返回该图片的绝对路径,,否则返回零   ,*/,public  static  String  getRealPathFromUri (Context 上下文,Uri  uri), {   int 才能;sdkVersion =, Build.VERSION.SDK_INT;   if 才能;(sdkVersion 祝辞=,19),{,//api 祝辞=,19   ,,return  getRealPathFromUriAboveApi19(上下文,uri);   ,,},else  {,//api  & lt;, 19   ,,return  getRealPathFromUriBelowAPI19(上下文,uri);   ,,}   ,}/* *   *,才能适配api19以下(不包括api19),根据uri获取图片的绝对路径   ,*   *,才能@param  context 上下文对象   *,才能@param  uri ,图片的Uri   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在Android中获取图片路径