Android获取SD卡中选中图片的路径(URL)



在Android开发中,获取SD卡上用户选择的图片路径是一个常见的需求,这通常涉及到与系统的媒体库交互,以便用户能够从相册中选取图片。以下将详细介绍如何实现这个功能。 我们需要添加必要的权限到AndroidManifest.xml文件中,因为访问SD卡和读取文件需要以下权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 然后,我们可以使用Intent来启动系统的图片选择器,如下所示: ```java Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, SELECT_IMAGE_REQUEST_CODE); ``` 这里的`SELECT_IMAGE_REQUEST_CODE`是一个自定义常量,用于识别返回的结果。 当用户在相册中选择一张图片后,系统会回调`onActivityResult()`方法。在这个方法中,我们可以获取到选中图片的URI: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SELECT_IMAGE_REQUEST_CODE && resultCode == RESULT_OK && data != null) { Uri selectedImageUri = data.getData(); // 进一步处理selectedImageUri } } ``` `data.getData()`返回的是一个ContentProvider的URI,而不是实际的文件路径。因此,我们需要将其转换为真实的文件路径。在API 19(KitKat)及以上版本,我们可以使用`DocumentsContract`类: ```java String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImageUri, projection, null, null, null); if (cursor != null) { cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(projection[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); } ``` 对于API 18及以下的版本,可以使用`getPath()`方法,但请注意这个方法可能不适用于所有设备,因为它依赖于特定的URI模式: ```java public static String getPath(Context context, Uri uri) { // 一些常见的URI模式 ... return "path from query"; } ``` 获取到图片路径后,你可以根据需求进行上传操作。例如,使用OkHttp或其他网络库发送HTTP请求: ```java // 创建OkHttpClient实例 OkHttpClient client = new OkHttpClient(); // 构建RequestBody,将图片转为byte[] RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("image", "image.jpg", RequestBody.create(MediaType.parse("image/jpeg"), new File(picturePath))) .build(); // 创建请求 Request request = new Request.Builder() .url("http://your.upload.server/api/upload") .post(requestBody) .build(); // 发送请求并处理响应 client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 处理失败情况 } @Override public void onResponse(Call call, Response response) throws IOException { // 处理成功响应 } }); ``` 总结来说,获取SD卡中选中图片的路径主要涉及以下步骤: 1. 添加读写外部存储权限。 2. 启动图片选择器Intent。 3. 在`onActivityResult()`中获取选中图片的URI。 4. 转换URI为实际的文件路径。 5. 根据路径进行文件上传操作。 以上就是关于“Android获取SD卡中选中图片的路径”的详细过程,希望对你有所帮助。记得在实际开发中考虑兼容性问题,并处理可能出现的异常情况。

















































































- 1

- 粉丝: 174
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- spring-webmvc-3.2.12.RELEASE.jar中文文档.zip
- spring-webmvc-3.2.14.RELEASE.jar中文文档.zip
- spring-webmvc-3.2.15.RELEASE.jar中文文档.zip
- spring-webmvc-3.2.16.RELEASE.jar中文文档.zip
- plc泡沫塑料切片机自动化设计.doc
- spring-webmvc-3.2.17.RELEASE.jar中文文档.zip
- spring-webmvc-3.2.18.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.0.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.1.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.2.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.3.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.4.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.6.RELEASE.jar中文文档.zip
- spring-webmvc-4.0.5.RELEASE.jar中文文档.zip
- 基于项目管理化教学的《ASP动态网站》课程设计与实践.doc
- spring-webmvc-4.0.7.RELEASE.jar中文文档.zip



- 1
- 2
- 3
- 4
- 5
- 6
前往页