我试图拍照并将其保存在内部存储器中,所以这样,只有我的应用程序才能访问图片 我该怎么做?我想了很多事情没有成功,甚至从谷歌的官方文档被破坏,这是我的实际代码,即在公共目录节省:拍照并将其保存在内部存储器
@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);
}
}
}
但这样的画面将成为大众和现有甚至画廊,我不希望这样,因为我需要添加一些数据库信息与每张图片,所以我需要他们对我的应用程序是私人的...
我该怎么做?
谢谢!
这是可能适合您的答案: http://stackoverflow.com/questions/22574350/how-to-keep-images-private-to-the-app-and-not-可在画廊中查看 –
你可以做两件事..第一次保存您的图像与周期(。)前缀。这会隐藏你的图片库。第二 - 参考这个https://developer.android.com/guide/topics/data/data-storage.html#filesInternal使用openFileOutput(FILENAME,Context.MODE_PRIVATE);并保存你的图片。 – RajSharma
。 preffix会更像是一个解决方法吗?还是真的在这种情况下使用? – user3159043