1

我使用 Activity 中的内置相机应用程序拍照。问题是如果方向改变并且我的活动被重绘,我无法处理从相机 Intent 返回的数据,我试图搜索同样的问题,但它似乎让我更加困惑。我是选择捆绑包还是选择 OnConfigurationChanged() 我已将 android:configChanges="orientation" 放在 Manifest 文件中的活动标签中,对于调用相机意图的特定活动,但问题似乎仍然存在。谁能指导我解决问题。

这是我的代码:

if(i==0){
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if( requestCode == 1337 && resultCode== Activity.RESULT_OK){
        Bundle extras = data.getExtras();

        if (extras != null){
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 1;
            options.inPurgeable = true;
            options.inInputShareable = true;
            thumbnail = (Bitmap) data.getExtras().get("data");
            // imgview.setImageBitmap(thumbnail);
            image(thumbnail);

        }else{
            Toast.makeText(CreateProfile.this, "Picture NOt taken", Toast.LENGTH_LONG).show();
        }
        super.onActivityResult(requestCode, resultCode, data);     
    }
}
4

3 回答 3

2

首先,您的代码有问题。

你问是否if (extras != null){但仍然从数据中获取位图thumbnail = (Bitmap) data.getExtras().get("data");这条线应该是

thumbnail = (Bitmap) extras.get("data");

其次,不要使用 android:configChanges,它会弄乱很多其他的东西,而且大多数应用程序不应该使用它。

如果您的意思是在获取数据后改变方向,则使用 saveInstanceState 效果很好。尝试这样的事情,只需将您需要的数据放入 outState Bundle 并将其取回 onRestoreInstance 方法

@Override
protected void onSaveInstanceState(Bundle outState) {
 outState.putAll(extras);
 super.onSaveInstanceState(outState);

}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {

 super.onRestoreInstanceState(savedInstanceState);
 extras.putAll(savedInstanceState);
}
于 2013-02-22T09:09:47.503 回答
2

尝试将此属性添加到您activityManifest文件中。

android:configChanges="keyboardHidden|orientation|screenSize"

谢谢。

于 2013-02-22T08:46:07.327 回答
1

如果您的应用程序的目标 sdk 大于 12,请将其更改为 12,然后再试一次。

安卓:targetSdkVersion="12"

并且不要忘记将 android:configChanges="orientation|keyboardHidden" 添加到清单中的活动行

于 2013-02-22T08:57:36.187 回答