精华内容
下载资源
问答
  • Android 图片Uri转Path
    2018-06-14 09:26:51
    public static String getPath(Context context, Uri uri) {
            final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
            // DocumentProvider
            if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
                // ExternalStorageProvider
                if (isExternalStorageDocument(uri)) {
                    final String docId = DocumentsContract.getDocumentId(uri);
                    final String[] split = docId.split(":");
                    final String type = split[0];
    
                    if ("primary".equalsIgnoreCase(type)) {
                        return Environment.getExternalStorageDirectory() + "/" + split[1];
                    }
                }
                // DownloadsProvider
                else if (isDownloadsDocument(uri)) {
    
                    final String id = DocumentsContract.getDocumentId(uri);
                    final Uri contentUri = ContentUris.withAppendedId(
                            Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
    
                    return getDataColumn(context, contentUri, null, null);
                }
                // MediaProvider
                else if (isMediaDocument(uri)) {
                    final String docId = DocumentsContract.getDocumentId(uri);
                    final String[] split = docId.split(":");
                    final String type = split[0];
    
                    Uri contentUri = null;
                    if ("image".equals(type)) {
                        contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                    } else if ("video".equals(type)) {
                        contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                    } else if ("audio".equals(type)) {
                        contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                    }
    
                    final String selection = "_id=?";
                    final String[] selectionArgs = new String[]{split[1]};
    
                    return getDataColumn(context, contentUri, selection, selectionArgs);
                }
            }
            // MediaStore (and general)
            else if ("content".equalsIgnoreCase(uri.getScheme())) {
                return getDataColumn(context, uri, null, null);
            }
            // File
            else if ("file".equalsIgnoreCase(uri.getScheme())) {
                return uri.getPath();
            }
            return null;
        }

    更多相关内容
  • Android Uri转Path

    2016-10-17 14:11:21
    Uri转Path
  • Android中UriPath之间的转换 原因 调用系统拍照应用,拍照后要保存图片,那么我们需要指定一个存储图片路径的Uri。这就涉及到如何将file path转换为Uri。有时候我们还需要根据照片的路径得到照片的media Uri,那么...
  • Android Uri Path

    千次阅读 热门讨论 2020-02-08 19:08:22
    网上可以搜到很多 Uri 路径的方法,但都是互相抄袭根本没经过验证的。现在最新是 Android 10,而网上那些方法,大多连 Android 7 引入文件权限(fileProvider)都不支持。本着认真仔细的研究,我安...

    文件管理器的组成

    调用系统自带的文件管理器有如下几个选项,分为两类

    • 系统自带的文件管理器
    • 第三方集成到系统管理器中

    下面是调用选择文件方法后,调用系统文件管理器出来的界面
    在这里插入图片描述网上可以搜到很多 Uri 转路径的方法,但都是互相抄袭根本没经过验证的。现在最新是 Android 10,而网上那些方法,大多连 Android 7 引入文件权限(fileProvider)都不支持。本着认真仔细的研究,我安装了如下文件浏览器。
    在这里插入图片描述

    不同类别 Uri 的格式

    系统自带的文件管理器

    列名uri
    1. 图片content://com.android.providers.media.documents/document/image%3A1598915
    2. 视频content://com.android.providers.media.documents/document/video%3A1594850
    3. 音频content://com.android.providers.media.documents/document/audio%3A920365
    4. 最近content://com.android.providers.media.documents/document/image%3A1598915
    5. 下载content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Ftest.txt
    6. 手机(vivo X20A)content://com.android.externalstorage.documents/document/primary%3Atest.txt

    第三方集成到系统管理器中

    列名uri
    7. 视频content://media/external/video/media/1594849
    8. 选择曲目content://media/external/audio/media/1151693
    9. 录音机
    10. 相册content://media/external/images/media/1508729
    11. WPS Officecontent://cn.wps.moffice_eng.fileprovider/external/test.txt
    12. 文件管理器file:///storage/emulated/0/test.txt
    13. ES文件管理器content://com.estrongs.files/storage/emulated/0/test.txt
    14. ES文件管理器content://com.gzhesnet.filemanager.FILE_PROVIDER/storage_root/test.txt
    15. 文件管理器content://com.jinghong.fileguanlijh.FILE_PROVIDER/storage_root/Android/log.txt
    16. 文件管理content://com.tencent.mtt.fileprovider/QQBrowser/test.txt
    17. 7Zippercontent://org.joa.zipperplus7//storage/emulated/0/test.txt

    有通过上面的 Uri 文本可以发现有如下几个共同点

    1. 自带的 图片、音频、视频、最近 的提供者都是 com.android.providers.media.documents,%3A是冒号,后面跟的是 ID
    2. 下载的提供者是 com.android.providers.downloads.documents
    3. 手机文件夹的提供者是 com.android.externalstorage.documents
    4. 视频、曲目、相机 都来自 media
    5. 其它第三方文件管理器的格式基本一致:content:// 第三方 fileprovider / 暴露路径名 / 文件相对SD卡的具体路径。
    6. 只有一个估计是旧版的文件管理器使用的是 file 协议下的绝对路径。

    代码讲解

    uri 拆分

    以 content://com.android.providers.media.documents/document/image%3A1598915 为例

    函数返回值说明
    uri.getScheme()contenturi 协议
    uri.getAuthority()com.android.providers.media.documents文件提供器标识
    uri.getPath()/document/image:159815获取文件提供器之后的路径
    uri.getPathSegments()[document, image:1598915]获取文件提供器之后的路径,以File.separator切分成数组(自动解码)
    Uri.withAppendedPath(uri, segment)content://com.android.providers.media.documents/document/image%3A1598915/segment在uri最后添加一个子路径

    uri 分类

    1. 系统的内容提供器
    2. 第三方的内容提供器
    3. 旧式file类型的uri

    系统的内容提供器

    系统内容提供器创建的文件都是来自 DocumentsProvider,使用 DocumentsContract.isDocumentUri(context, uri) 可以判断该 uri 是否来自 系统内容提供器,源码如下

    首先 uri 的协议必须是 content。

    public static final String SCHEME_CONTENT = "content";
    
    public static boolean isContentUri(@Nullable Uri uri) {
    	return uri != null && ContentResolver.SCHEME_CONTENT.equals(uri.getScheme());
    }
    

    其次,必须来自文档提供器。通过文件提供器的意图去系统里查询,对于查询到的结果,一一比对。如果存在一致的提供器标识(authority),则返回 true

    /**
     * Intent action used to identify {@link DocumentsProvider} instances. This
     * is used in the {@code <intent-filter>} of a {@code <provider>}.
     */
    public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
    
    private static boolean isDocumentsProvider(Context context, String authority) {
    	final Intent intent = new Intent(PROVIDER_INTERFACE);
    	final List<ResolveInfo> infos = context.getPackageManager()
    			.queryIntentContentProviders(intent, 0);
    	for (ResolveInfo info : infos) {
    		if (authority.equals(info.providerInfo.authority)) {
    			return true;
    		}
    	}
    	return false;
    }
    

    DocumentsContract.isDocumentUri(Context context, Uri uri) 函数,先判断 uri 的类型是content,并且内容提供器是 DocumentsProvider。然后通过 uri.getPathSegments() 获取被 File.separator 分隔路径片段并自动解码(注意到:%3A是:;%2F是/ )所以我们上面给出的 uri 的 paths.size 一般都等于 2,然后再判断第一个片段的值是否是 document

    @UnsupportedAppUsage
    private static final String PATH_DOCUMENT = "document";
    @UnsupportedAppUsage
    private static final String PATH_TREE = "tree";
    
    public static boolean isDocumentUri(Context context, @Nullable Uri uri) {
    	if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) {
    		final List<String> paths = uri.getPathSegments();
    		if (paths.size() == 2) {
    			return PATH_DOCUMENT.equals(paths.get(0));
    		} else if (paths.size() == 4) {
    			return PATH_TREE.equals(paths.get(0)) && PATH_DOCUMENT.equals(paths.get(2));
    		}
    	}
    	return false;
    }
    

    DocumentsContract.getDocumentId(Uri uri) 这个函数就是获取 DocumentsProvider 提供器的 uri 的 path 部分,然后如果 第一个路径片段是 document,则取第二个部分

    public static String getDocumentId(Uri documentUri) {
    	final List<String> paths = documentUri.getPathSegments();
    	if (paths.size() >= 2 && PATH_DOCUMENT.equals(paths.get(0))) {
    		return paths.get(1);
    	}
    	if (paths.size() >= 4 && PATH_TREE.equals(paths.get(0))
    			&& PATH_DOCUMENT.equals(paths.get(2))) {
    		return paths.get(3);
    	}
    	throw new IllegalArgumentException("Invalid URI: " + documentUri);
    }
    

    %3A,也就是冒号之前的,共有5种格式,分别是

    • image
    • video
    • audio
    • raw
    • primary
    //如果是document类型的Uri,通过document id处理,内部会调用Uri.decode(docId)进行解码
    String docId = DocumentsContract.getDocumentId(uri);
    //primary:Azbtrace.txt
    //video:A1283522
    String[] splits = docId.split(":");
    Log.i(TAG, "docId " + docId + ", " + Arrays.toString(splits));
    String type = null, id = null;
    if(splits.length == 2) {
    	type = splits[0];
    	id = splits[1];
    }
    

    系统的 DocumentsProvider 一共有3种

    • com.android.providers.media.documents(image、video、audio、document)
    • com.android.providers.downloads.documents(raw)
    • com.android.externalstorage.documents(primary)
    switch (uri.getAuthority()) {
    	case "com.android.externalstorage.documents":
    		if("primary".equals(type)) {
    			path = Environment.getExternalStorageDirectory() + File.separator + id;
    		}
    		break;
    	case "com.android.providers.downloads.documents":
    		if("raw".equals(type)) {
    			path = id;
    		} else {
    			Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
    			path = getMediaPathFromUri(context, contentUri, null, null);
    		}
    		break;
    	case "com.android.providers.media.documents":
    		Uri externalUri = null;
    		switch (type) {
    			case "image":
    				externalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    				break;
    			case "video":
    				externalUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    				break;
    			case "audio":
    				externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    				break;
    			case "document":
                    externalUri = MediaStore.Files.getContentUri("external");
                    break;
    		}
    		if(externalUri != null) {
    			String selection = "_id=?";
    			String[] selectionArgs = new String[]{ id };
    			path = getMediaPathFromUri(context, externalUri, selection, selectionArgs);
    		}
    		break;
    }
    

    第三方的内容提供器

    非 DocumentsProvider,并且协议类型是 content

    if (ContentResolver.SCHEME_CONTENT.equalsIgnoreCase(uri.getScheme())) {
    	……
    }
    

    以下这些字段的值都是 _data

    • MediaStore.Images.Media.DATA
    • MediaStore.Audio.Media.DATA
    • MediaStore.Video.Media.DATA
    • MediaStore.MediaColumns.DATA
    ContentResolver resolver = context.getContentResolver();
    String[] projection = new String[]{ MediaStore.MediaColumns.DATA };
    Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, null);
    if (cursor != null) {
    	if (cursor.moveToFirst()) {
    		try {
    			int index = cursor.getColumnIndexOrThrow(projection[0]);
    			if (index != -1) path = cursor.getString(index);
    			Log.i(TAG, "getMediaPathFromUri query " + path);
    		} catch (IllegalArgumentException e) {
    			e.printStackTrace();
    			path = null;
    		} finally {
    			cursor.close();
    		}
    	}
    }
    

    当通过相机或第三方文件管理器获取文件时就会报:IllegalArgumentException: column’_data’ does not exist. Available columns: [],而ES文件浏览器,通过resolver去query,会报RuntimeException。因此,它们要提出来在 query 之前做特殊处理。

    对于第三方提供的路径,有2种情况

    • authority 后面直接的是实际路径
    • authority 后面跟了一个应用路径,然后是相对sd卡的路径
    String path;
    String authroity = uri.getAuthority();
    path = uri.getPath();
    String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
    if(!path.startsWith(sdPath)) {
    	int sepIndex = path.indexOf(File.separator, 1);
    	if(sepIndex == -1) path = null;
    	else {
    		path = sdPath + path.substring(sepIndex);
    	}
    }
    

    旧式file类型的uri

    协议类型是 file

    if(ContentResolver.SCHEME_FILE.equalsIgnoreCase(uri.getScheme()) {
    	……
    }
    
    方法说明
    Uri.parse(String uriString)uri 字符串转uri
    Uri.fromFile(File file)路径转 uri
    uri.getPath()uri 转路径

    假设路径为 storage/emulated/0/test.txt,通过 Uri.fromFile 就可以转成 file:///storage/emulated/0/test.txt
    而 file:///storage/emulated/0/test.txt 这种格式的 Uri,直接调用 uri.getPath,就会得到 storage/emulated/0/test.txt

    完整代码如下

    public static String getPathFromUri(Context context, Uri uri) {
    	String path = null;
    	if (DocumentsContract.isDocumentUri(context, uri)) {
    		//如果是document类型的Uri,通过document id处理,内部会调用Uri.decode(docId)进行解码
    		String docId = DocumentsContract.getDocumentId(uri);
    		//primary:Azbtrace.txt
    		//video:A1283522
    		String[] splits = docId.split(":");
    		String type = null, id = null;
    		if(splits.length == 2) {
    			type = splits[0];
    			id = splits[1];
    		}
    		switch (uri.getAuthority()) {
    			case "com.android.externalstorage.documents":
    				if("primary".equals(type)) {
    					path = Environment.getExternalStorageDirectory() + File.separator + id;
    				}
    				break;
    			case "com.android.providers.downloads.documents":
    				if("raw".equals(type)) {
    					path = id;
    				} else {
    					Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
    					path = getMediaPathFromUri(context, contentUri, null, null);
    				}
    				break;
    			case "com.android.providers.media.documents":
    				Uri externalUri = null;
    				switch (type) {
    					case "image":
    						externalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    						break;
    					case "video":
    						externalUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    						break;
    					case "audio":
    						externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    						break;
    					case "document":
                    		externalUri = MediaStore.Files.getContentUri("external");
                    		break;
    				}
    				if(externalUri != null) {
    					String selection = "_id=?";
    					String[] selectionArgs = new String[]{ id };
    					path = getMediaPathFromUri(context, externalUri, selection, selectionArgs);
    				}
    				break;
    		}
    	} else if (ContentResolver.SCHEME_CONTENT.equalsIgnoreCase(uri.getScheme())) {
    		path = getMediaPathFromUri(context, uri, null, null);
    	} else if (ContentResolver.SCHEME_FILE.equalsIgnoreCase(uri.getScheme())) {
    		//如果是file类型的Uri(uri.fromFile),直接获取图片路径即可
    		path = uri.getPath();
    	}
    	//确保如果返回路径,则路径合法
    	return path == null ? null : (new File(path).exists() ? path : null);
    }
    
    private static String getMediaPathFromUri(Context context, Uri uri, String selection, String[] selectionArgs) {
    	String path;
    	String authroity = uri.getAuthority();
    	path = uri.getPath();
    	String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
    	if(!path.startsWith(sdPath)) {
    		int sepIndex = path.indexOf(File.separator, 1);
    		if(sepIndex == -1) path = null;
    		else {
    			path = sdPah + path.substring(sepIndex);
    		}
    	}
    	
    	if(path == null || !new File(path).exists()) {
    		ContentResolver resolver = context.getContentResolver();
    		String[] projection = new String[]{ MediaStore.MediaColumns.DATA };
    		Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, null);
    		if (cursor != null) {
    			if (cursor.moveToFirst()) {
    				try {
    					int index = cursor.getColumnIndexOrThrow(projection[0]);
    					if (index != -1) path = cursor.getString(index);
    					Log.i(TAG, "getMediaPathFromUri query " + path);
    				} catch (IllegalArgumentException e) {
    					e.printStackTrace();
    					path = null;
    				} finally {
    					cursor.close();
    				}
    			}
    		}
    	}
    	return path;
    }
    
    展开全文
  • 照片Uri转path

    2018-02-12 22:08:10
    if(Build.VERSION.SDK_INT >=19){ if(DocumentsContract.isDocumentUri(this,uri)){ String totalId=DocumentsContract.getDocumentId(uri); if("com.android.providers
     if(Build.VERSION.SDK_INT >=19){
                if(DocumentsContract.isDocumentUri(this,uri)){
                    String totalId=DocumentsContract.getDocumentId(uri);
                    if("com.android.providers.media.documents".equals(uri.getAuthority())){
                        String id=totalId.split(":")[1];
                        String selection= MediaStore.Images.Media._ID+"="+id;
                        path=doTranslate(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selection);
                    }else if("com.android.providers.downloads.documents".equals(uri.getAuthority())){
                        Uri contentUri= ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),Long.valueOf(totalId));
                        path=doTranslate(contentUri,null);
                    }
                }else if("content".equalsIgnoreCase(uri.getScheme())){
                    path=doTranslate(uri,null);
                }else if("file".equalsIgnoreCase(uri.getScheme())){
                    path=uri.getPath();
                }
            }else{
                path=doTranslate(uri,null);
            }
    private String doTranslate(Uri uri,String selection){
            String thePath=null;
            Cursor cursor=getContentResolver().query(uri,null,selection,null,null);
            if(cursor!=null){
                if(cursor.moveToFirst()){
                    thePath=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
                }
                cursor.close();
            }
            return thePath;
        }
    展开全文
  • * path转uri * @param context * @param imageFile * @return */ public static Uri getImageContentUri(Context context, java.io.File imageFile) { String filePath = imageFile.getAbsolutePath(); ...
    
        /**
         * path转uri
         * @param context
         * @param imageFile
         * @return
         */
        public static Uri getImageContentUri(Context context, java.io.File imageFile) {
            String filePath = imageFile.getAbsolutePath();
            Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    new String[] { MediaStore.Images.Media._ID }, MediaStore.Images.Media.DATA + "=? ",
                    new String[] { filePath }, null);
            if (cursor != null && cursor.moveToFirst()) {
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
                Uri baseUri = Uri.parse("content://media/external/images/media");
                return Uri.withAppendedPath(baseUri, "" + id);
            } else {
                if (imageFile.exists()) {
                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.DATA, filePath);
                    return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
                } else {
                    return null;
                }
            }
        }
    
     /**
         * uri 转path
         * @param selectedVideoUri
         * @param contentResolver
         * @return
         */
        public static String getFilePathFromContentUri(Uri selectedVideoUri,
                                                       ContentResolver contentResolver) {
            String filePath;
            String[] filePathColumn = {MediaStore.MediaColumns.DATA};
    
            Cursor cursor = contentResolver.query(selectedVideoUri, filePathColumn, null, null, null);
    //      也可用下面的方法拿到cursor
    //      Cursor cursor = this.context.managedQuery(selectedVideoUri, filePathColumn, null, null, null);
    
            cursor.moveToFirst();
    
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            filePath = cursor.getString(columnIndex);
            cursor.close();
            return filePath;
        }
    
    展开全文
  • Android中UriPath之间的转换

    千次阅读 2019-06-19 17:24:25
    Android Uri to Path 现在遇到的常规Uri有两种: 媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回 其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file...
  • path = uri.getPath(); return path; } // 以 content:// 开头的,比如 content://media/extenral/images/media/17766 if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()) && Build.VERSION.SDK_INT ...
  • 说明Android页面之间传递不提供传递Uri类型,但是去截屏页面截图,把图片返回到操作页面显示,需要把相册或者相机的Uri连接传递的。代码 返回:private Uri imageUri; .... Intent intent = new Intent(this, ...
  • Uri转换成Path(绝对路径) 适配所有版本

    万次阅读 多人点赞 2017-03-06 16:04:18
    public class UriToPathUtil { public static String getRealFilePath(Context context, final Uri uri) { if (null == uri) return null; final String scheme = uri.getScheme();
  • Android中UriPath之间的相互转化

    万次阅读 2018-04-21 15:21:27
    Android Uri to Path现在遇到的常规Uri有两种:媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回。其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法...
  • android10以上 uri转file uri转真实路径

    万次阅读 多人点赞 2020-05-18 10:50:06
    fun uriToFile(context: Context, uri: Uri): File? = when(uri.scheme){ ContentResolver.SCHEME_FILE -> uri.toFile() ContentResolver.SCHEME_CONTENT ->{ val cursor = context.contentResolver.query...
  • 一、path转fileFile ...二、path转uriUri uri = Uri.parse(path);三、uri转path/*** 将URI路径转化为path路径*/public static String getRealPathFromURI(Context context,Uri contentURI) {String result;Cursor ...
  • file,uri,path相互转化

    千次阅读 2017-08-08 20:18:10
    uri转file: file = new File(new URI(uri.toString()));...uri转path: private String getPath(Uri uri) { String[] projection = {MediaStore.Video.Media.DATA}; Cursor cursor = managedQu
  • 从文件uri获取真实文件路径 安装(iOS) 目前不支持 安装(Android) npm i react-native-get-real-path@https://github.com/Wraptime/react-native-get-real-path.git --save 对以下文件进行更改: android/...
  • Android中Uripath file三者的相互转换

    千次阅读 2020-07-16 19:00:42
    二、path转uri Uri uri = Uri.parse(path); 三、uri转path /** * 将URI路径转化为path路径 */ public static String getRealPathFromURI(Context context,Uri contentURI) { String result; Cursor curs...
  • Android之uri、file、path相互转化

    万次阅读 2017-08-04 10:23:29
    1、uri转file:file = new File(new URI(uri.toString())); file转uri:URI uri = file.toURI(); 2、uri转path:private String getPath(Uri uri) { String[] projection = {MediaStore.Video.Media.DATA};
  • 参考:https://www.cnblogs.com/JLZT1223/p/6805558.html常用的URI:https://www.cnblogs.com/lyd447113735/p/7805878.htmlAndroid Uri是Google依据Java URI为Android量身打造的,本篇将和大家一起学习Android中的...
  • Android UriPath与File的相互转换(新) 一、path-&gt;file File file = new File(path); 二、 file-&gt;path String path = file.getPath(); 注意URIUri的区别 1 URI:是java.net的...
  • Android拍照获得图片URI为空的处理方法 拍照的方法: public void takePhoto() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); this.startActivityForResult(intent, 3); } ...
  • 一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢? 其实很简单,直接上代码: public static String ...
  • uri转字符串路径工具

    2017-03-05 13:09:31
    uri转字符串路径,解决4.0以上的兼容问题,
  • android 图片路径pathuri之间的相互转换
  • import android.content.Context; import android.database.Cursor;...import android.net.Uri; import android.provider.MediaStore; import java.io.File; import java.net.URI; import java.net.URISyntaxExcep...
  • Uri转换为String类型路径

    千次阅读 2017-07-03 14:10:53
    public static String getPathFromUri(Context context, Uri uri) { if (null == uri) { return null; } String scheme = uri.getScheme(); String path = null;
  • url、uripath 的区别

    万次阅读 2021-12-30 22:38:47
    url、uripath 的区别
  • uri,file,path互相转化

    2017-10-01 17:23:26
    Uri,file,path互相转化

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,160
精华内容 103,264
关键字:

uri转path

友情链接: tuerdsequencecharacter.rar