1

我正在做一个项目,我需要将图像和视频仅保存在应用程序内部存储器中(而不是在 SDCard 或设备库中)。我正在使用下面的代码。但这也将图像/视频保存到设备库。请指教。

Bitmap bm;
        View v=imageview;
        v.setDrawingCacheEnabled(true);
        bm=Bitmap.createBitmap(v.getDrawingCache());
        v.setDrawingCacheEnabled(false);
        String fileName="image.png";        
        try 
        {
            FileOutputStream fOut=openFileOutput(fileName, MODE_PRIVATE);
            bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);

        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }   

我想将图像和视频设为私密和安全。所以我想将它们保存在应用程序内部存储器中。所以没有其他应用程序可以访问它。请建议。

4

2 回答 2

3

将图像存储在内存中,它将图像存储在内部图像文件夹中。

                    Uri uriSavedImage;

                // the temp folder to start the camera activity with
                    String fileName = "image_" + String.valueOf(imageNum)+ ".png";
                    path = getDir("images", Context.MODE_WORLD_WRITEABLE).getPath() + "/" + fileName;
                    // start the camera activity
                    file = new File(path);
                    while (file.exists()) {
                        imageNum++;
                        fileName = "image_" + String.valueOf(imageNum)+ ".png";     
                        path = getDir("images_pho",Context.MODE_WORLD_WRITEABLE).getPath()+ "/" + fileName;
                        file = new File(path);
                    }
                    Uri ur = Uri.parse(file.toString());
                    uriSavedImage = Uri.fromFile(file);

            Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

            OutputStream imageFileOS;
            try {
                imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
                imageFileOS.write(data);
                imageFileOS.flush();
                imageFileOS.close();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

希望它有帮助

于 2013-04-22T06:11:54.060 回答
0

正如我告诉你的,您可以将相机拍摄的照片存储在内部存储器中,然后您可以立即从图库中删除拍摄的图像,getContentResolver().delete(uri, null, null);或者您可以使用它:

if (takenpicturefile.exists())
        if (takenpicturefile.delete())
            Log.d("tag","filedeleted");

有关更多详细信息,您可能需要参考。希望能帮助到你。

于 2013-04-22T08:17:02.607 回答