我使用我的Activity中的内置相机应用程序来拍照 . 问题是,如果方向改变并重新绘制我的活动,我无法处理从相机Intent返回的数据,我试图搜索同样的问题,但它似乎让我更加困惑 . 我是去捆绑的东西还是去OnConfigurationChanged()我已经在Manifest文件中的活动标签中放置了android:configChanges =“orientation”,这个特定的活动调用了摄像头意图,但问题似乎仍然存在 . 任何人都可以指导我一个解决方案 .
这是我的代码:
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);
}
}
3 回答
尝试将此属性添加到
Manifest
文件中的activity
.谢谢 .
首先,您的代码中存在问题 .
你问
if (extras != null){
但仍然从数据thumbnail = (Bitmap) data.getExtras().get("data");
得到你的位图这条线应该是其次,不要使用android:configChanges,它会弄乱很多其他东西,大多数应用程序都不应该使用它 .
如果您的意思是在获取数据后更改方向,则使用saveInstanceState可以正常工作 . 尝试这样的东西,只需将你需要的数据放在outState Bundle中,然后在onRestoreInstance方法中取回它
如果您的应用的目标sdk大于12,请将其更改为12并再次尝试pelase .
机器人:targetSdkVersion = “12”
并且不要忘记将android:configChanges =“orientation | keyboardHidden”添加到清单中的活动行