android - 未能将结果 ResultInfo{who=null, request=0, result=-1, data=null} 传递给 Activity

标签 android

<分区>

Possible Duplicate:
I'm getting a NullPointerException when I use ACTION_IMAGE_CAPTURE to take a picture

我有一些代码。

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.按确定。 (保存照片)
一切都很好。

1.竖屏手机。
2.启动应用程序。
3.按下按钮拍照。
4.将手机旋转到水平位置。
5.按确定。 (保存照片)
有错误

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

我想当我将手机旋转到水平位置时,intent 被重新加载,而相机没有
知道将结果发送到哪里。
如何解决此问题。

解决方案:

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

最佳答案

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);
}

}

关于android - 未能将结果 ResultInfo{who=null, request=0, result=-1, data=null} 传递给 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311595/

相关文章:

android tabHost 在每个选项卡内有许多 Activity

android - 在 super.onCreate 上添加内容错误之前必须调用 requestFeature()

android - Google Play 服务在我的 Android 游戏中无法正常运行

android - 调用 consumeAsync

java - Android 从计时器任务启动 Activity

安卓包结构

Android 支持包/兼容性库 - 使用 v4 还是 v13?

android - Gradle 用于 S3 上的 android 和 pom 类型依赖项(maven)

java - 使用 SearchView 过滤 Recyclerview 后位置错误

android - Firebase Firestore 子集合安全查询