gpt4 book ai didi

android - 拍照并将其保存在内部存储器中

转载 作者:搜寻专家 更新时间:2023-11-01 09:41:44 24 4
gpt4 key购买 nike

我正在尝试拍照并将其保存在内部存储器中,这样一来,只有我的应用程序才能访问这些照片我怎样才能做到这一点?我尝试了很多事情都没有成功,甚至谷歌的官方文档也被破坏了,这是我的实际代码,保存在公共(public)目录中:

@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);
}
}
}

但是通过这种方式图片将变得公开并且甚至可以在图库中使用,我不希望这样,因为我需要为每张图片添加一些数据库信息,所以我需要它们对我的应用程序是私有(private)的...

我该怎么做?

谢谢!

最佳答案

如果您将照片保存在 SD 卡或外部存储器上,任何应用程序都可以访问它。尝试获取私有(private)目录并将您的照片保存在那里。

取自here

创建私有(private)文件并将其写入内部存储:

1-使用文件名和操作模式调用openFileOutput()。这将返回一个 FileOutputStream。

2-使用write()写入文件。

3-使用 close() 关闭流。

例如:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

阅读“使用内部存储”:Link

关于android - 拍照并将其保存在内部存储器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39584620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com