0

「レストラン」を保存するために SQLite データベースを使用しています。レストランとその属性を追加しようとしていますが、SD カードから SQLite データベースへの画像パスを保存しようとすると、実行時例外が発生します。

これがコードです。

examinar.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent i = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
    });


    agregar.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String nombre1 = String.valueOf(nombre.getText());
            String tipo1 = tipo;
            String direccion1 = String.valueOf(direccion.getText());
            String descripcion1 = String.valueOf(descripcion.getText());

            Toast.makeText(getApplicationContext(),
                    "ruta : +" + imagen1, Toast.LENGTH_SHORT)
                    .show();
            if (nombre1.length() != 0 && tipo1.length() != 0 && direccion1.length() != 0 && descripcion1.length() != 0 && imagen1.length() != 0) {

                dataSource.insertarRestaurant1(nombre1, tipo1, direccion1, imagen1, descripcion1);
                setResult(RESULT_OK);
                finish();
                Toast.makeText(getApplicationContext(),
                        "Insertado exitosamente", Toast.LENGTH_SHORT)
                        .show();
            } else {
                Toast.makeText(getApplicationContext(),
                        "Debe llenar todos los campos", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    });

    cancelar.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            nombre.setText(" ");
            //tipo.setText(" ");
            direccion.setText(" ");
            descripcion.setText(" ");
            //imagen.setText(" ");

        }
    });

}

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            String filePath = selectedImage.getEncodedPath();
            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            imagen1 = filePath;
            cursor.close();
            Toast.makeText(getApplicationContext(),
                    "ruta : +" + filePath, Toast.LENGTH_SHORT)
                    .show();

        }


    }

}

4

1 に答える 1

0

ActivityForResult メソッドの行の下に配置します。

Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));

ここで、imageFile は File のグローバル オブジェクトです。

次に、以下のコードを使用して画像をデータベースに保存します。

String pathimg = imageFile.getAbsolutePath();

dba.open();

dba.insertPhoto(pathimg);

ここで、dba はデータベース クラスのオブジェクトです。

次のようなデータベースクラスにテーブルを作成します。

private static final String CREATETABLE_PHOTO = "create table eqpphoto("EImage text " + ");";

public static final String TABLE_PHOTO = "eqpphoto";

public long insertPhoto(String EImage) {

    try {
        System.out.println("Function call : ");
        ContentValues values = new ContentValues();

        values.put(EIMAGE, EImage);
        return db.insert(TABLE_PHOTO, null, values);
    } catch (Exception e) {
        e.printStackTrace();
        return 0;
    }
}
于 2013-06-24T13:20:06.273 に答える