Java Android从摄像头获取图像Uri,存储在SQLite中,并将其恢复到我的自定义适配器上

Java Android从摄像头获取图像Uri,存储在SQLite中,并将其恢复到我的自定义适配器上,java,android,sqlite,camera,datatableadapters,Java,Android,Sqlite,Camera,Datatableadapters,我遵循了Android开发者的例子,从相机意图中获取一张图像,并将其放置在视图中。当我尝试在我的SqliteDatabase上保存该图像uri(只是指向该图像的链接,而不是完整图像,因此我节省了空间)然后尝试在customadapter上还原它时,问题就开始了 链接到谷歌开发者-> 我试过了,但没有成功 创建了一个全局字符串徽标,并在handleSmallCameraPhoto内放置 private void handleSmallCameraPhoto(Intent intent) {

我遵循了Android开发者的例子,从相机意图中获取一张图像,并将其放置在视图中。当我尝试在我的
SqliteDatabase
上保存该图像uri(只是指向该图像的链接,而不是完整图像,因此我节省了空间)然后尝试在customadapter上还原它时,问题就开始了

链接到谷歌开发者->

我试过了,但没有成功

创建了一个全局字符串徽标,并在
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();
然后我将logo存储在SQLite上,并尝试通过这种方式在适配器上恢复它

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


使用获取图像的路径

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
是所选图像的路径


希望对您有所帮助。

不起作用,当我将handleSmallCameraPhoto放入测试Toast->Toast.makeText(选择此项,Toast.LENGTH\u LONG.show();alw显示为空白,因此看起来它没有获取URI,并且它在sql中存储了一个空白字段:(
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;
    }

}