0

我是Android新手,正在開發關於Google的培訓課程,現在遇到問題。在執行Bundle extra = data.getExtras()後,extra爲空。此外,它會拋出一個NullPointerException之前,我添加代碼"if(extra!=null)" 下面是onActivityResult的代碼()方法Bundle extra = data.getExtras()在使用攝像頭拍攝後沒有任何照片

enter image description here

下面是代碼部分,啓動攝像頭,並保存照片在本地

enter image description here

我的所有代碼都遵循培訓課程,我很困惑哪裏出錯。 有人可以幫我嗎?

+4

把你的代碼放在這裏,而不是圖像。 – currarpickt

回答

0

請更新您的onActivityResult(),拍攝照片的結果不響應圖像。它返回你在photo_intent.putExtra(MediaStore.EXTRA_OUTPUT, <<uri>>)中通過的Uri。所以,請聲明<<uri>>全球那麼你可以如果你通過了額外的參數MediaStore.EXTRA_OUTPUT用相機意圖,然後相機活動將寫入所拍攝的圖像,以這條道路在onActivityResult()

+0

我認爲你是對的,現在我發現它會返回一個Uri,我想我會解決它,非常感謝! – smilebuz

+0

@smilebuz結果如何? –

+0

現在,我可以正確顯示此消息,感謝您的幫助! – smilebuz

0
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 

      hasWriteContactsPermission = checkSelfPermission(Manifest.permission.CAMERA); 
      if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{Manifest.permission.CAMERA}, 
         REQUEST_CODE_ASK_PERMISSIONS); 
       return; 
      } 
     } else { 
      Intent intent = new Intent(
         MediaStore.ACTION_IMAGE_CAPTURE); 
       if (intent.resolveActivity(getPackageManager()) != null) { 
        File photo = new File(Environment 
          .getExternalStorageDirectory(), 
          "Journal" + Utils_class.getID() + ".jpeg"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, 
          Uri.fromFile(photo)); 
        mSelectedFilePath = photo.getAbsolutePath(); 
        startActivityForResult(intent, 
          ACTION_TAKE_PICTURE); 
       } 

     } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     try { 
      if (resultCode == RESULT_OK) { 
     if (requestCode == ACTION_TAKE_PICTURE) { 
        // flag = true; 
        // new Utils(); 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
         checkPermissionForStorageForCam(); 
        } else { 

         Uri selectedImageUri = data.getData(); 

        } 


       } 

      } 
     } catch (Exception e) { 
     } 
    } 
+0

@smilebuz你必須檢查它的marshmellow與否。如果沼澤醇厚意味着您已獲得運行時間的許可。 –

0

得到這個值並不會返回onActivityResult方法中的位圖。

如果您將檢查您傳遞的路徑,那麼您將知道實際上攝像頭已將捕獲的文件寫入該路徑。

相關問題