2017-04-22 5 views
0

사진을 찍어서 imageView에 표시하는 앱이 있는데 문제가 Android 1 또는 7.1.1에 있습니다. 누가 휴대 전화에 이미지가 화면에 나타나면 다른 휴대 전화는 완벽하게 작동합니다 (Samsung S7 Edge Nougat 7.0.0 및 Nexus 5X Marshmallow 6.0.0에서 완벽하게 작동합니다.) 참고 : 7.1.1에서는 충돌이 발생하지 않으며 표시되지 않습니다. 및 이미지를 화면에 표시합니다.ImageView.setImageBitmap (bla) 함수가 Android One Nougat에서 작동하지 않습니다. 7.1.1

코드 샘플 사진을 촬영 한 후 :

if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) { 
      // Show the thumbnail on ImageView 
      Uri imageUri = Uri.parse(mCurrentPhotoPath); 
      File file = new File(imageUri.getPath()); 
      try { 
       InputStream ims = new FileInputStream(file); 
       binding.ivPhoto.setImageBitmap(BitmapFactory.decodeStream(ims)); 
      } catch (FileNotFoundException e) { 
       return; 
      } 
     } 

답변

0

을 내가 문제를 발견, 문제는 내가 디렉토리에 파일을 저장하려고 할 때 외부 드라이브에 디렉토리를 찾을 수 없습니다 즉, 솔루션이며, 그런 디렉토리가 없다면 새로운 디렉토리를 만들어야합니다.

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String path = Environment.getExternalStorageDirectory() + "/" + "AdoptPet/"; 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = new File(Environment.getExternalStoragePublicDirectory(
      path), "Camera"); 
    if (!storageDir.exists()) { 
     storageDir.mkdirs(); 
    } 

    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
    return image; 
}