카메라 장치의 표준 프로그램을 제공하는 활동을 만들었습니다. 그림을 만든 후에는 전화 메모리에 저장되고 그림의 이름이 데이터베이스에 저장됩니다. 문제는 몇 장의 사진을 만들면 데이터베이스의 사진과 레코드 이름이 일치하지 않는다는 것입니다. 예를 들어 : 그 스택 :이 경우Android. onActivityResult의 오류
10-21 20:22:37.617: I/System.out (22 016): Debug - name of foto - 70,134,596
10-21 20:22:45.195: I/System.out (22 016): Debug - name of foto - 89,410,152
10-21 20:22:45.382: I/System.out (22 016): Debug - name of database record - 89,410,152
는 이름을 가진 사진을 만들어 - 70134596,하지만 데이터베이스 레코드 수를 가져옵니다 - 코드 여기에 89410152.있어 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = null;
date = (int) (Math.random() * 100000000);
photo = new File(Environment.getExternalStorageDirectory()
+ "/DebtorMini", date + ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
System.out.println("Debug - name of foto - " + date);
startActivityForResult(intent, TAKE_PICTURE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case TAKE_PICTURE:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getContentResolver().notifyChange(selectedImage, null);
ImageView imageView = new ImageView(ctx);
setContentView(imageView);
ContentResolver cr = getContentResolver();
Bitmap bitmap = null;
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
imageView.setImageBitmap(bitmap);
Toast.makeText(this, selectedImage.toString(),
Toast.LENGTH_LONG).show();
DataBaseHelper helper = new DataBaseHelper(this);
try {
helper.createDataBase();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Bundle extras = getIntent().getExtras();
String category = extras.getString("category");
String address = extras.getString("address");
Toast.makeText(
this,
"Фотография успешно создана категория - " + category
+ " адресс - " + address, Toast.LENGTH_SHORT)
.show();
helper.openDataBase();
helper.exec("INSERT INTO 'photos' (`id`, `address`, `category`) VALUES ('"
+ date + "', '" + address + "', '" + category + "')");
System.out.println("Debug - name of database record - " + date);
helper.close();
}
}
}
어떻게 이 문제를 해결하려면?
감사합니다,하지만 당신은 미디어에 저장된 마지막 파일의 이름을 얻기 위해 미디어 제공자를 쿼리로 샘플링 할 수 있습니까? – Kyborg2011
당신이 물어 본 것에 대한 대답에 코드를 추가했습니다. –