2011-12-12 2 views
2

Я не нашел практического примера, который специально относится к сохранению пути к файлу изображения, которое вы использовали с приложением камеры, к базе данных SQLite в приложении.Сохранение пути к файлу изображения в базу данных sqlite

Я видел код, чтобы сохранить изображение из источника HTML ... ничего хорошего! Моя проблема в том, что у меня есть URI, но, честно говоря, я не могу понять доступные данные (dev guide, Stack Overflow questions), как вставить этот путь к столбцу базы данных.

Вот мой код, где я пытаюсь установить текстовое поле редактирования, чтобы путь был безопасным для базы данных. Я пробовал это в эмуляторе:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { 
     Bitmap x = (Bitmap) data.getExtras().get("data"); 
     File storagePath = new File(Environment.getExternalStorageDirectory() + 
            "/DCIM/GPAA/"); 
     storagePath.mkdirs(); 
     File myImage = new File(storagePath, 
           System.currentTimeMillis() + ".jpg"); 
     try { 
      FileOutputStream out = new FileOutputStream(myImage); 
      x.compress(Bitmap.CompressFormat.JPEG, 80, out); 
      Uri outputFileUri = Uri.fromFile(myImage); 
      mnotesText = (EditText)findViewById(R.id.notes); 
      mnotesText.setText (outputFileUri.toString()); 
      ((ImageView)findViewById(R.id.photoResultView)).setImageBitmap(x); 
      out.close(); 

      Toast.makeText(Review.this, 
          "Image saved: " + outputFileUri.toString(), 
          Toast.LENGTH_LONG).show(); 
     } catch (FileNotFoundException e) { 
     } catch (IOException e){ 
     } 
    } 
} 

С помощью этого кода тост проверяет правильность и правильность строки. Однако запись в mnotesText.setText (outputFileUri.toString()); работает в эмуляторе. Но, как ни странно, телефон не работает.

+1

Если ваша проблема решена, вы должны опубликовать решение в качестве ответа (да, это вполне приемлемо, чтобы ответить на свой вопрос). Если вы хотите подождать лучшего ответа, просто не принимайте его. (Вы заметите, что тысячи вопросов были решены здесь, но очень немногие из них имеют «РЕШЕНИЕ» в названии.) –

ответ

1

г-н Эд ответил условии, что это ответ на свой собственный вопрос, я очистил его ниже:

Я уверен, что это не является предпочтительным способом сделать это, но это работает:

  1. В вашем layout.xml задайте текстовое поле редактирования и скройте текст, изменив цвет текста на задний план. Или нет, если вы хотите увидеть текст.

  2. Укажите соответствующее поле в свой менеджер базы данных.

  3. В вашей деятельности вставьте текст в текстовое поле.

    String path = outputFileUri.toString(); 
    mpic.setText (path); 
    

Когда он сохраняется путь сохраняется в базе данных. Используйте BitmapFactory декодировать путь изображения, как это:

// String username created from edit text field to a string 
String username = mpic.getText().toString(); 
// Bitmap will decode the string to a image (bitmap) 
Bitmap myBitmap = BitmapFactory.decodeFile(username); 
// Image view used to set the bitmap 
ImageView myImage = (ImageView) findViewById(R.id.photoResultView); 
// Setting the image to the image view 
myImage.setImageBitmap(myBitmap); 
Смежные вопросы