我正在尝试拍照并将其保存在内部存储中,这样,只有我的应用才能访问图片 我怎样才能做到这一点?我正在尝试很多事情但没有成功,即使谷歌的官方文档被破坏,这是我的实际代码,保存在公共目录中:
import sys
from collections import Counter
tokenizedInput = map(int, sys.stdin.read().split())
N = tokenizedInput[0]
array = tokenizedInput[1:N + 1]
collection = Counter(array)
Q = tokenizedInput[N + 1]
k = N + 2
for j in range(Q):
offset = 2 * j + k
query, frequency = tokenizedInput[offset:offset + 2]
for w in range(N):
value = collection[array[w]]
if query == 0:
if value >= frequency:
print array[w]
break
else:
if value == frequency:
print array[w]
break
else: # aka "no break"
print 0
但是通过这种方式,图片将变得公开并且甚至可以在图库中使用,我不希望这样,因为我需要为每张图片添加一些数据库信息,所以我需要它们是我的应用程序的私有...
我该怎么做?
谢谢!
答案 0 :(得分:2)
如果您将照片保存在SD卡或外部存储设备上,任何应用都可以访问它。尝试获取私人目录并将照片保存在那里。
从here
获取创建私有文件并将其写入内部存储:
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
上阅读“使用内部存储空间”答案 1 :(得分:1)
您无法使用相机意图拍照并保存到内部存储器。只是不允许 Android Documentation
通常,用户使用设备相机拍摄的任何照片都应为 保存在设备的公共外部存储中,以便所有人都可以访问 应用。
但是,
但是,如果您希望照片仅对应用程序保密,则可以使用getExternalFilesDir()提供的目录。在Android 4.3及更低版本上,写入此目录还需要WRITE_EXTERNAL_STORAGE权限。从Android 4.4开始,不再需要该权限,因为该目录无法被其他应用访问,因此您可以通过添加maxSdkVersion属性声明仅在较低版本的Android上才需要该权限:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
...
</manifest>
因此,您需要为此更改getOutputMediaFile()
方法:
private static File getOutputMediaFile()
{
File mediaStorageDir = context.getExternalFilesDir("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");
}
答案 2 :(得分:0)
您可以在保存图片的文件夹中创建.nomedia文件,然后其他应用中的媒体扫描程序将忽略您的文件夹
答案 3 :(得分:-2)
私有内部存储器不存在。保存图片时,请尝试删除后缀。然后它不是其他应用程序的图片。