2011-09-05 65 views
2

可能重複:
I'm getting a NullPointerException when I use ACTION_IMAGE_CAPTURE to take a picture未能提供結果ResultInfo {誰= NULL,要求= 0,結果= -1,數據= NULL},以活動

我有一些代碼。

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
File photo = new File(CamDir, filename); 
imageUri = Uri.fromFile(photo); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
startActivityForResult(intent, 0); 


public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Bitmap bitmap = null; 
    if (resultCode == Activity.RESULT_OK && requestCode == 0) { 
     Uri selectedImage = imageUri; 
     ContentResolver cr = getContentResolver(); 
     bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage); 
    } 

1.手機處於垂直位置。
2.啓動應用程序。
3.按下按鈕拍照。
4.press好的。 (保存照片)
一切都很好。

1.手機處於垂直位置。
2.啓動應用程序。
3.按下按鈕拍照。
4.將手機旋轉到水平位置。
5.press好的。 (保存照片)
有錯誤

E/AndroidRuntime(22779): java.lang.RuntimeException: Failure delivering result 
ResultInfo{who=null, request=0, result=-1, data=null} to activity 
com.photo/com.photo.PhotoActivity}: 
java.lang.NullPointerException 

我認爲,當我在旋轉手機的水平位置的意圖被重新加載,並且相機不能
知道從哪裏發出的結果。
如何解決這個問題。

解決方法:

onActivityResult(...){ 
... 
reload() 
} 
public void reload() 
{ Intent intent = getIntent(); overridePendingTransition(0, 0); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
finish(); 
overridePendingTransition(0, 0); 
startActivity(intent); 
} 
+0

你是怎麼解決你的問題,現在我面臨同樣的問題。 –

+0

試試這個:http://stackoverflow.com/questions/8248327/my-android-camera-uri-is-returning-a-null-value-but-the-samsung-fix-is-in-place – Bush

+1

我有希望重新加載的東西能爲我工作,但它似乎重新加載活動,而不是做一些實際有用的事情。它也拋棄了拍攝照片的結果,包括我沒有明確堅持和重新加載的任何數據,而且它仍然崩潰了大約一半的時間。 –

回答

1
public class BrowsePicture extends Activity { 

private static final int SELECT_PICTURE = 1; 

private String selectedImagePath; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ((Button) findViewById(R.id.Button01)) 
      .setOnClickListener(new OnClickListener() { 

       public void onClick(View arg0) { 

        // in onCreate or any event where your want the user to 
        // select a file 
        Intent intent = new Intent(); 
        intent.setType("image/*"); 
        intent.setAction(Intent.ACTION_GET_CONTENT); 
        startActivityForResult(Intent.createChooser(intent, 
          "Select Picture"), SELECT_PICTURE); 
       } 
      }); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
     } 
    } 
} 

public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

} 
+0

謝謝你! – aspel

+11

你能詳細說明你是如何解決問題的,而不是隻粘貼一段代碼? –

相關問題