android - 以安全的方式从相机捕获全分辨率图像(如果可能,不存储到磁盘)

标签 android security android-camera android-camera-intent

我正在开发一个应用程序,允许用户捕获安全文档的图像并将这些图像上传到服务器(我正在尝试做的一个很好的例子是允许用户拍摄支票照片的银行应用程序。 )

出于安全原因,如果可能的话,我不希望图像在任何时候物理存储在磁盘上。

当我尝试使用 MediaStore.ACTION_IMAGE_CAPTURE intent 执行此操作时,它有效...但分辨率非常低。我认为这是为了防止过度使用 RAM。我四处寻找解决方案,但我发现的所有解决方案都涉及将图像存储在 SD 卡或内部 NAND 存储器上。我不想那样做。

如果无法避免存储照片,是否可以将图像存储到只能由我的应用程序访问的位置?然后我会在文件上传后删除它。如果我必须这样做,有什么方法可以在存储照片时对其进行加密吗?

这是我当前代码的简化,以防有帮助:

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent,requestCode);

protected void onActivityResult(int requestCode, int resultcode, Intent data)
{
    if (resultcode == RESULT_OK)
    {
        Bitmap bmp = getBitmapFromIntent(data);
    }
}
private Bitmap getBitmapFromIntent(Intent intent)
{
    Bundle extras = intent.getExtras();
    return (Bitmap) extras.get("data");
}

最佳答案

您可以将文件直接保存在设备的内部存储器中。默认情况下,保存到内部存储的文件对您的应用程序是私有(private)的,其他应用程序无法访问它们(用户也不能)。当用户卸载您的应用程序时,这些文件将被删除。

String file_path = "/data/data/com.packagename/cache/";
            File dir = new File(file_path);
            if (!dir.exists())
                dir.mkdirs();
            File file = new File(dir, "1" + ".jpg");

            try {
                FileOutputStream fos = new FileOutputStream(file);
                fos.write(data); // data in byte format
                fos.close();
            } catch (FileNotFoundException e) {
                Log.e("Not Found", "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.e("Not Found", "Error accessing file: " + e.getMessage());
        }

关于android - 以安全的方式从相机捕获全分辨率图像(如果可能,不存储到磁盘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13164261/

相关文章:

安卓 : Receive data in UDP/TCP

android - 在 Scrollview 中使用 FragmentStatePagerAdapter、Viewpager 的问题

c# - SQL Server 安全通信

java - 加密可执行 jar

php - 易受 SQL 注入(inject)攻击的 GET 参数 - PHP

android - TextInputEditText 中的 OnClickListener 包裹在 TextInputLayout 中

android - 如何在sqlite数据库中存储微调按钮的值

java - 无法在 Android 中使用自定义相机将捕获的图像保存在文件夹中

android - 如何在 android 上使用 ffmpeg 录制视频?

android - 从 Android 设备拍摄多张照片