我試圖拍照並將其保存在內部存儲器中,所以這樣,只有我的應用程序才能訪問圖片 我該怎麼做?我想了很多事情沒有成功,甚至從谷歌的官方文檔被破壞,這是我的實際代碼,即在公共目錄節省:拍照並將其保存在內部存儲器
@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