2012-12-27 26 views
2

我一直在相机应用程序中工作,该应用程序只是将照相机拍摄的照片存储在自定义文件夹中。我遇到了一个奇怪的错误,我一直无法找到重复的问题。虽然我的应用程序需要将照片保存在文件夹中,但图像不可见。甚至更奇怪的是,存储在相机镜头文件夹(我的手机的默认图片存储位置)中的图像副本是可见的。我试过用不同的方法修改我的代码,但我仍然得到相同的结果。以下是我的代码。任何帮助将不胜感激! 谢谢!安卓相机图像在自定义文件夹中不可查看

camera.setOnClickListener(new View.OnClickListener() {    
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

        String name = Environment.getExternalStorageDirectory().toString(); 
         File mainFolder = new File(name + "/Filename/");  
          mainFolder.mkdirs(); 
          Random generator = new Random(); 
          int random = 10000; 
          random = generator.nextInt(random); 
          String fileName = "Image-"+ random +".jpg"; 
          File file = new File (mainFolder, fileName); 
          if (file.exists()) file.delete(); 
          try { 
            FileOutputStream stream = new FileOutputStream(file); 
            bmp.compress(Bitmap.CompressFormat.JPEG, 90, stream); 
            stream.flush(); 
            stream.close(); 

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

        startActivityForResult(i, cameraData); 
       } 

      }); 

回答

0

我想通了。我错过了URI。下面是更新(和工作)代码的任何人谁会遇到这个问题:

camera.setOnClickListener(new View.OnClickListener() {    
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

       String name = Environment.getExternalStorageDirectory().toString(); 
        File mainFolder = new File(name + "/Filename/");  
         mainFolder.mkdirs(); 
         Random generator = new Random(); 
         int random = 10000; 
         random = generator.nextInt(random); 
         String fileName = "Image-"+ random +".jpg"; 
         File file = new File (mainFolder, fileName); 
         Uri uriSavedImage = Uri.fromFile(file); 
         i.putExtra("output", uriSavedImage); 

       startActivityForResult(i, cameraData); 
      } 

     });