2015-12-02 147 views
1

我正嘗試使用相機在我的應用程序中拍照,然後裁剪拍攝的圖像。Android果凍豆相機返回null URI

一切正在爲最新版本的Android工作,但不適用於Android Kitkat 4.4.2。

Camera返回空URI。

得到URI onActivityReslult:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_CODE && resultCode == RESULT_OK) { 
      Bundle extras = data.getExtras(); 
      Bitmap imageBitmap = (Bitmap) extras.get("data"); 

      picUri = data.getData(); 
      Intent i = new Intent(PublierActivity.this, CropActivity.class); 
      i.putExtra("Uri", picUri); 
      startActivityForResult(i, CROP_CODE); 

     } 

這裏是我如何調用攝像頭意圖:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
        startActivityForResult(takePictureIntent, CAMERA_CODE); 
       } 

有沒有什麼辦法來做出最古老版本的Android例外來解決這個問題呢?

回答

1

從您的代碼中,您會看到您正在嘗試使用ACTION_IMAGE_CAPTURE。在這種情況下,應該有從不Uridata.getData()應該總是返回null。如果相機應用碰巧返回Uri,那麼可能是是圖像,但由於ACTION_IMAGE_CAPTURE未記錄爲返回Uri,因此您無法知道Uri的作用。

如果您在ACTION_IMAGE_CAPTUREIntent上使用EXTRA_OUTPUT,您知道應該在哪裏存儲圖像,因爲您告訴相機應用程序存儲它的位置。請注意,某些相機應用程序是越野車,無法兌現EXTRA_OUTPUT,將圖像放在任何他們想要的地方。

如果您不使用EXTRA_OUTPUT,那麼您將在"data"額外獲得縮略圖。

此外,請記住,這與Android操作系統版本無關,並且與用戶選擇使用的相機應用程序有關。有數以千計的Android設備型號。這些裝載有數十個,如果不是數百個,預裝了不同的相機應用程序。用戶也可能選擇安裝第三方相機應用程序。任何這些都可以處理您的請求。