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

时间:2016-09-20 02:02:13

标签: android camera internal-storage

我正在尝试拍照并将其保存在内部存储中,这样,只有我的应用才能访问图片 我怎样才能做到这一点?我正在尝试很多事情但没有成功,即使谷歌的官方文档被破坏,这是我的实际代码,保存在公共目录中:

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

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

我该怎么做?

谢谢!

4 个答案:

答案 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)

私有内部存储器不存在。保存图片时,请尝试删除后缀。然后它不是其他应用程序的图片。