2017-01-04 110 views
0

我試圖將相機拍攝的圖像保存到設備的INTERNAL存儲器中,然後將其作爲ImageView使用,但無法訪問該文件。這全是爲了教育目的。我有一個按鈕可以將相機應用程序作爲子活動。Android:無法從Android設備上的內部存儲器訪問圖像文件

public void addListener() { 
    Button b = (Button)findViewById(R.id.snap); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      File picturesDirectory; 
      picturesDirectory = getFilesDir(); 
      imageFile = new File(picturesDirectory, "passspoints_image"); 

      Log.d(DEBUGTAG, imageFile.getAbsolutePath()); 

      Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile)); 
      startActivityForResult(i, PHOTO_TAKEN); 
     } 
    }); 
} 

然後我試圖訪問該文件。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch(requestCode) { 
     case PHOTO_TAKEN: 
      Log.d(DEBUGTAG, imageFile.getAbsolutePath()); 
      Bitmap photo = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
      try { 
       photo = rotateImageIfRequired(photo, Uri.fromFile(imageFile)); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      if(photo != null) { 
       ImageView imageView = (ImageView)findViewById(R.id.imageView); 
       imageView.setImageBitmap(photo); 
      } else { 
       Toast.makeText(this, "Unable to read photo file", Toast.LENGTH_LONG). 
         show(); 
      } 
      break; 
    } 
} 

這是從調試標籤的路徑:

/data/data/tk.crackedbunny.www.takingphotostest/files/passspoints_image 

這是錯誤消息:

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/data/tk.crackedbunny.www.takingphotostest/files/passspoints_image: open failed: ENOENT (No such file or directory) 

在此之前,我已成功這個使用外部存儲做,但如果外部存儲器不可用,我想使用內部存儲器。

謝謝。

回答

0

passspoints_image圖片名稱?如何爲它添加擴展名,例如passspoints_image.jpg

或者您有AndroidManifest.xml文件的讀取/寫入權限嗎?

+0

是的,** passpoins_image **是文件的名稱。正如我剛纔提到的那樣,當我使用外部存儲時,它工作的很好,當我在Android清單中有滲透時,但我認爲它們只是用於讀/寫才能使用外部存儲外部,而不是內部存儲。無論如何,我有這個: '<使用權限 android:name =「android.permission.WRITE_EXTERNAL_STORAGE」 />' – dkk6

+0

不幸的是,使用.jpg和.bmp,它仍然無法正常工作。 – dkk6

相關問題