软件编程
位置:首页>> 软件编程>> Android编程>> android图片文件的路径地址与Uri的相互转换方法

android图片文件的路径地址与Uri的相互转换方法

作者:jingxian  发布时间:2023-09-09 20:11:45 

标签:android,uri,文件路径

一个android文件的Uri地址一般如下:

content://media/external/images/media/62026

这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢?

其实很简单,直接上代码:


public static String getRealFilePath( final Context context, final Uri uri ) {
 if ( null == uri ) return null;
 final String scheme = uri.getScheme();
 String data = null;
 if ( scheme == null )
   data = uri.getPath();
 else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
   data = uri.getPath();
 } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
   Cursor cursor = context.getContentResolver().query( uri, new String[] { ImageColumns.DATA }, null, null, null );
   if ( null != cursor ) {
     if ( cursor.moveToFirst() ) {
       int index = cursor.getColumnIndex( ImageColumns.DATA );
       if ( index > -1 ) {
         data = cursor.getString( index );
       }
     }
     cursor.close();
   }
 }
 return data
 }

如我们有一个图片的路径地址又该如何获得其Uri呢?


 String type = Utils.ensureNotNull(intent.getType());
       Log.d(TAG, "uri is " + uri);
       if (uri.getScheme().equals("file") && (type.contains("image/"))) {
         String path = uri.getEncodedPath();
         Log.d(TAG, "path1 is " + path);
         if (path != null) {
           path = Uri.decode(path);
           Log.d(TAG, "path2 is " + path);
           ContentResolver cr = this.getContentResolver();
           StringBuffer buff = new StringBuffer();
           buff.append("(")
               .append(Images.ImageColumns.DATA)
               .append("=")
               .append("'" + path + "'")
               .append(")");
           Cursor cur = cr.query(
               Images.Media.EXTERNAL_CONTENT_URI,
               new String[] { Images.ImageColumns._ID },
               buff.toString(), null, null);
           int index = 0;
           for (cur.moveToFirst(); !cur.isAfterLast(); cur
               .moveToNext()) {
             index = cur.getColumnIndex(Images.ImageColumns._ID);
             // set _id value
             index = cur.getInt(index);
           }
           if (index == 0) {
             //do nothing
           } else {
             Uri uri_temp = Uri
                 .parse("content://media/external/images/media/"
                     + index);
             Log.d(TAG, "uri_temp is " + uri_temp);
             if (uri_temp != null) {
               uri = uri_temp;
             }
           }
         }
       }
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com