我試圖從用戶那裏獲取一張照片,然後將其發送到我們的服務器。我提供了兩種選擇:從圖庫中選擇或使用手機中的默認相機拍攝新照片。Android:使用相機意圖拍攝照片並將其保存到java.io.File
畫廊的東西正常工作,我可以得到他們選擇的照片,併發送沒有任何問題。但是在相機選項中,相機會打開,拍攝一張照片,並將其保存在SD卡上,並保存在我指定的位置,沒問題,但是當它返回到我的應用程序時,我總是得到NullPointerException,並且我的應用程序被強制關閉。這是我做的:
private String tempFilePath = "";
...
public void addPhotoUsingCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
tempFilePath = getOutputMediaFilePath(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(tempFilePath)));
startActivityForResult(intent, CAMERA_ACTIVITY_CODE);
}
然後我用下面進入拍攝的照片:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
...
case CAMERA_ACTIVITY_CODE:
if (resultCode == Activity.RESULT_OK) {
picture = new File(tempFilePath);
}
break;
...
}
}
我也試過
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.photoTaken);
image.setImageBitmap(thumbnail);
內case CAMERA_ACTIVITY_CODE:
但無論我怎麼努力我在這部分代碼中總是得到一個NullPointerException。
有logcat信息,其中行202對應於case CAMERA_ACTIVITY_CODE:
部分。
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=101, result=-1, data=null} to activity {com.ollaa.android/com.ollaa.android.share.ShareFinalScreen}: java.lang.NullPointerException
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): Caused by: java.lang.NullPointerException
01-31 23:40:13.154: ERROR/AndroidRuntime(8009): at com.ollaa.android.share.ShareFinalScreen.onActivityResult(ShareFinalScreen.java:202)
任何幫助,非常感謝。
注:我已經在AndroidManifest中聲明瞭與相機和SD卡相關的所有必要權限。
編輯:我意識到,tempFilePath不會持續,直到相機活動返回到我的應用程序。我在我的onCreate
方法中初始化了tempFilePath,但是當我嘗試從onActivityResult
以外的其他函數嘗試到達時,未設置此時間圖片。我覺得我根本不瞭解Java,當我們在一個函數內改變一個類變量時,改變後的值應該可以從該類的所有函數中看到。
我嘗試了你的建議,但沒有任何區別。不管怎麼說,還是要謝謝你 :) – ecem 2012-02-01 00:36:18