我想拍照并将其保存在内部存储中,这样只有我的应用程序才能访问照片。我该怎么做?我尝试了很多方法都没有成功,即使是Google的官方文档也有问题。这是我的实际代码,它保存在公共目录:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pictures);
imageView = (ImageView)findViewById(R.id.imageView);
fabNewPicture = (FloatingActionButton)findViewById(R.id.fab_new_picture);
fabNewPicture.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
takePicture(v);
}
});
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
}
private void takePicture(View v)
{
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = Uri.fromFile(getOutputMediaFile());
i.putExtra(MediaStore.EXTRA_OUTPUT, file);
startActivityForResult(i, 100);
}
private static File getOutputMediaFile()
{
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "FotoAula");
if (!mediaStorageDir.exists()){
if (!mediaStorageDir.mkdirs()){
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
return new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100) {
if (resultCode == RESULT_OK) {
imageView.setImageURI(file);
}
}
}
但这样图片将成为公共的,并且甚至可以在相册中使用,我不想这样,因为我需要为每张图片添加一些数据库信息,所以我需要它们对我的应用程序是私有的...如何做到这一点?谢谢!