2011-09-14 94 views
0

我有一個類訪問本機相機拍照。照片拍攝完成後,它將保存在一個文件夾中,該照片將顯示在新的活動中。意圖問題Android

問題是,我試圖獲取數據後,我把意圖的照片已被採取,但它總是說,意圖是null.pointer.exception。以下是我的課程,任何人都請幫助我。

import java.io.File; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

public class CameraTestActivity extends Activity { 
Button start; 
final int TAKE_PICTURE = 2; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    start = (Button)findViewById(R.id.startButton); 

    start.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      File file = new File(Environment.getExternalStorageDirectory().toString() + "/testImage/" + "toBeUpload.jpg"); 
      Uri imageUri = Uri.fromFile(file); 


      Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE"); 
      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
      cameraIntent.putExtra("path", imageUri.toString()); 
      startActivityForResult(cameraIntent,TAKE_PICTURE); 

     } 
    }); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
    super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode == RESULT_OK) 
    { 
     if(requestCode == TAKE_PICTURE) 
     { 
      /*ERRROR OCCUR HERE*/ 
      Bundle extras = intent.getExtras(); 
     } 
    } 
} 
} 
+0

檢查logcat的,他們給其中線的錯誤並嘗試解決它........檢查目的是空的細節? –

+0

可能重複的[Android ACTION_IMAGE_CAPTURE意圖](http://stackoverflow.com/questions/1910608/android-action-image-capture-intent) –

回答

1

Rich和userSeven7s是正確的,但它不僅僅是在特定情況下的重點:您實際上不需要Intent的照片選擇器的返回數據(例外:某些車載電話很舊的電話只能在附加功能中寫入縮略圖並且實際上不會將圖像寫入到您指定的路徑中,但這是另一個故事) - 只需查找寫入您最初通過此意圖的URI的圖像即可。

+0

可以精心設計一些關於最後一句話的內容,「只需查找寫入您最初通過意圖的URI的圖像即可。」 對不起,我的英語不太好。 – chenhou90

+0

您已寫下此行:'cameraIntent.putExtra –

+0

你的意思是我直接訪問Uri但沒有從意圖獲得Uri?這可以工作,但我仍然不明白爲什麼意圖是空的原因。 – chenhou90

0

不知調用super.onActivityResult在消費意圖的實例,當它與它的通過將其設置爲空。你不需要這個超級類的調用,因爲你自己實現它,所以試試看。

+0

我試過沒有調用super.onActivityResult,但意圖爲空。 – chenhou90

0

處理事件後調用super.onActivityResult(requestCode, resultCode, intent);