Android从相机获取图像Uri,存储在SQLite中并在我的自定义适配器上恢复它

时间:2012-08-07 10:24:16

标签: java android sqlite camera datatableadapters

我按照Android开发人员的示例,从相机意图中获取图像并将其放在您的视图上。当我尝试在我的SqliteDatabase上保存该图像时,问题就开始了(只是指向该图像的链接而不是完整图像,所以我节省了空间),然后我尝试在我的惯用器上恢复它。

链接到google dev - > http://developer.android.com/training/camera/index.html

我试了这个没有成功

创建了一个全局字符串徽标,并在handleSmallCameraPhoto内放置了此

private void handleSmallCameraPhoto(Intent intent) {
        Bundle extras = intent.getExtras();
        mImageBitmap = (Bitmap) extras.get("data");
        ImagenViaje.setImageBitmap(mImageBitmap);
        ImagenViaje.setVisibility(View.VISIBLE);
    --> logo = extras.get("data").toString();

然后我在SQLite上存储了logo,并尝试以这种方式在我的适配器上恢复它

String imagePath = c.getString(c.getColumnIndexOrThrow(MySQLiteHelper.COLUMN_LOGO_PATH));

然后

 ImageView item_image = (ImageView) v.findViewById(R.id.logo);
    item_image.setVisibility(ImageView.INVISIBLE);
        Bitmap bitmap = BitmapFactory.decodeFile(imagePath);

        item_image.setImageBitmap(bitmap);
        item_image.setVisibility(ImageView.VISIBLE);

1 个答案:

答案 0 :(得分:0)

使用

获取图像路径
Uri selectedImageUri = intent.getData();
String s1 = intent.getDataString(); 

String selectedImagePath = getPath(selectedImageUri);
if(selectedImagePath==null && s1 != null)
{
    selectedImagePath = s1.replaceAll("file://","");
}
您的handleSmallCameraPhoto方法

中的

在您的活动中添加此方法

public String getPath(Uri uri) {

    try{
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if(cursor==null)
    {
        return null;

    }
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
    }
    catch(Exception e)
    {
        return null;
    }

}

在您的数据库中保存selectedImagePath并在需要时使用selectedImagePath是所选图片的路径

希望能帮到你..