2013-04-22 1 views
1

Я работаю над проектом, где мне нужно сохранять изображения и видео только во внутренней памяти приложения (не в SDCard или в галерее устройств). Я использую код ниже. Но это также сохраняет изображение/видео в галерее устройств. Пожалуйста посоветуй.Как сохранить изображение и видео, снятые с камеры во внутренней памяти приложения только в Android?

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(); 
     } 

Я хочу сделать изображение и видео приватными и обеспеченными. Поэтому я хочу сохранить их во внутренней памяти приложений. Таким образом, никакое другое приложение не может получить к нему доступ. Пожалуйста, предложите.

+0

посмотрите на это http://stackoverflow.com/a/7887114/964741 –

+0

Я не понимаю. что вы подразумеваете под внутренней памятью приложений (не в SD-карте или галерее устройств)? не могли бы вы рассказать мне. –

+0

@RajaReddyPolamReddy Это обеспечивает механизм сохранения изображения в устройстве SDCard. Таким образом, все приложения могут получить к нему доступ. Я хочу сделать изображение и видео приватными и обеспеченными. Поэтому я хочу сохранить их во внутренней памяти приложений. Таким образом, никакое другое приложение не может получить к нему доступ. Пожалуйста, предложите. –

ответ

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(); 
      } 

надеюсь, что его помогает

+0

Я проверил код. Но это также будет галерея устройств. Не можем ли мы сохранить его в том месте, где ни одно другое приложение не сможет получить к нему доступ. –

+0

вы проверили с помощью устройства или эмулятора? –

+0

Я проверил его на устройстве. –

0

Как я уже говорил, вы можете сохранить снимок с камеры во внутренней памяти и сразу же можно удалить принятое изображение из галереи с getContentResolver().delete(uri, null, null); или вы можете использовать это :

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

Для получения более подробной информации, возможно, потребуется обратиться к this. Надеюсь, поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^