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


    最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单。其布局文件如下:

    [html]  view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent"  
    4.     android:layout_height="fill_parent"  
    5.     android:orientation="vertical" >  
    6.     <Button   
    7.         android:id="@+id/select"  
    8.         android:layout_width="fill_parent"  
    9.         android:layout_height="wrap_content"  
    10.         android:text="请选择SD卡中的图片"   
    11.         />  
    12. </LinearLayout>  

    JAVA文件如下:

     

    [java]  view plain copy
     
    1. package com.lostinai;  
    2.   
    3. import java.io.IOException;  
    4. import android.app.Activity;  
    5. import android.content.ContentResolver;  
    6. import android.content.Intent;  
    7. import android.database.Cursor;  
    8. import android.graphics.Bitmap;  
    9. import android.net.Uri;  
    10. import android.os.Bundle;  
    11. import android.provider.MediaStore;  
    12. import android.util.Log;  
    13. import android.view.View;  
    14. import android.widget.Button;  
    15.   
    16. public class QueryPictureUrlActivity extends Activity {  
    17.     private Button select;  
    18.     private final String IMAGE_TYPE = "image/*";  
    19.     private final int IMAGE_CODE = 0;   
    20.     public void onCreate(Bundle savedInstanceState) {  
    21.         super.onCreate(savedInstanceState);  
    22.         setContentView(R.layout.main);  
    23.         select = (Button)findViewById(R.id.select);  
    24.         select.setOnClickListener(new View.OnClickListener(){  
    25.             public void onClick(View v) {  
    26.                 Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);  
    27.                 getAlbum.setType(IMAGE_TYPE);  
    28.                 startActivityForResult(getAlbum, IMAGE_CODE);  
    29.             }  
    30.         });  
    31.     }  
    32.     protected void onActivityResult(int requestCode, int resultCode, Intent data){  
    33.         if (resultCode != RESULT_OK) {        //此处的 RESULT_OK 是系统自定义得一个常量  
    34. //            Log.e(TAG,"ActivityResult resultCode error");  
    35.             return;  
    36.         }  
    37.         Bitmap bm = null;  
    38.         ContentResolver resolver = getContentResolver();          
    39.         if (requestCode == IMAGE_CODE) {  
    40.             try {  
    41.                 Uri originalUri = data.getData();        //获得图片的uri   
    42.                 bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);        //显得到bitmap图片  
    43. //    这里开始的第二部分,获取图片的路径:   
    44.                 String[] proj = {MediaStore.Images.Media.DATA};          
    45.                 Cursor cursor = managedQuery(originalUri, proj, nullnullnull);   
    46.                 //按我个人理解 这个是获得用户选择的图片的索引值   
    47.                 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);             
    48.                 cursor.moveToFirst();  
    49.                 //最后根据索引值获取图片路径  
    50.                 String path = cursor.getString(column_index);  
    51.                 Log.e("Lostinai",path);   
    52.   
    53.             }catch (IOException e) {  
    54.   
    55.                 Log.e("Lostinai",e.toString());   
    56.   
    57.             }  
    58.   
    59.         }  
    60.     }        
    61. }  

    最后别忘记了加上权限啊

     

     

    [html]  view plain copy
     
    1. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
    2. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  
    3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  • 相关阅读:
    eclipse取消validation验证
    VMware12 pro装unlocker207补丁后依然没有apple mac选项,问题解决
    OSG学习:使用OSG中预定义的几何体
    技嘉主板+AMD CPU开启CPU虚拟化方法
    OSG学习:用多通道(multiple passes)实现透明度
    shader language学习(1)——shader language简介背景
    OSG学习:阴影代码示例
    代码整洁之道_条件判断
    springboot使用hibernate validator校验
    解决spring boot在RabbitMQ堆积消息情况下无法启动问题
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3167977.html
Copyright © 2020-2023  润新知