String mAppImageFile = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
camButton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { Intent intentCam = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); newImgPath = forNewName(); imageUri = Uri.fromFile(new File(mAppImageFile, fileName)); intentCam.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intentCam, CODE_CAMERA_PICTURE); }});
private String forNewName(){String str = UtilSD.getStrDate(); fileName = str+".jpg"; return mAppImageFile + "/" + fileName; }@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE_CAMERA_PICTURE && resultCode == RESULT_OK) { Bitmap bm = BitmapFactory.decodeFile(imageUri.toString()); //拍照后,直接访问图库,刚拍的照片不会显示,需要插入系统图库 MediaStore.Images.Media.insertImage(CompleteInstallActivity.this.getContentResolver(), bm, null, null); //然后发送广播扫描刷新保存图片的文件路径 final File file=new File(mAppImageFile, fileName); new Thread(new Runnable() { @Override public void run() { /** * @param file *发送广播扫描刷新图片 *否则,新拍得图片不显示在图库中 */ Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(file); intent.setData(uri); sendBroadcast(intent); } }).start(); }}