Хранение и извлечение Uri из sqlite
Я начинающий разработчик, и в настоящее время я работаю над приложением, в котором часть функциональности позволяет пользователям захватывать изображения, сохранять их в приложении ».с файловой системой и сохраните ее ссылку в столбце базы данных SQLite. Затем пользователь сможет просматривать эти изображения в виде сетки на основе любых критериев, с которыми он связан в базе данных (например, только отображение изображений определенного цвета).
Сначала я на самом деле «схватил» захваченное изображениеs имя файла и сохранить его в базе данных, используя этот код:
//Initializing Variables:
protected ImageButton _button;
protected ImageView _image;
protected TextView _field;
protected String _path;
protected String name;
protected boolean _taken;
protected static final String PHOTO_TAKEN = "photo_taken";
@Override
protected void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.onCreate(savedInstanceState);
setContentView(R.layout.newitemui);
//Creating the "item_images" directory and File:
File dir = new File("sdcard/item_images");
try
{
//Create new directory:
if(dir.mkdir())
{
System.out.println("Directory created");
}
else
{
System.out.println("Directory is not created");
}
}
catch(Exception e)
{
e.printStackTrace();
}
//Setting the current time stamp for image name:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
_image = ( ImageView ) findViewById( R.id.image );
_field = ( TextView ) findViewById( R.id.field );
_button = ( ImageButton ) findViewById( R.id.button );
_button.setOnClickListener( new ButtonClickHandler() );
name = "IMG_" + timeStamp + ".png";
_path = Environment.getExternalStorageDirectory() + File.separator + "/item_images" + "/" + name;
Toast toast = Toast.makeText(NewItemUI.this,"Touch Camera to Capture Image", Toast.LENGTH_LONG);
toast.show();
toast.setGravity(Gravity.DISPLAY_CLIP_HORIZONTAL|Gravity.BOTTOM, 0, 200);
}
public class ButtonClickHandler implements View.OnClickListener
{
public void onClick( View view ){
startCameraActivity();
}
}
protected void startCameraActivity()
{
File file = new File( _path );
Uri outputFileUri = Uri.fromFile( file );
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult( intent, 0 );
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch( resultCode )
{
//If user did not take photo, return to the original screen with no result:
case 0:
break;
//If user took a photo, insert the image name into database and return to the original screen with the captured image displayed:
case -1:
AppDatabase appdb = new AppDatabase(this);
SQLiteDatabase sql = appdb.getWritableDatabase();
sql.execSQL("INSERT INTO tblClothingItem (imagePath) VALUES ('"+name+"');");
sql.close();
appdb.close();
onPhotoTaken();
break;
}
}
Однако я понял, что сохраняемое имя файла - это обычная строка в контексте приложения и фактически не указывает ни на одно изображение, хранящееся в файловой системе.
Что я хотел бы знать, это:
Как я могухранить Uri изображения в моей базе данных SQLite, как она захваченаКак бы я пошла за получением изображений на основе их сохраненного Uri для отображения в виде сетки.Любые предложения, пример кода, обратная связь приветствуется.