我使用我的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);
}
}
答案 0 :(得分:2)
尝试将此属性添加到activity
文件中的Manifest
。
android:configChanges="keyboardHidden|orientation|screenSize"
感谢。
答案 1 :(得分: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);
}
答案 2 :(得分:1)
如果您的应用的目标sdk大于12,请将其更改为12并再次尝试pelase。
机器人:targetSdkVersion = “12”
并且也不要忘记将android:configChanges =“orientation | keyboardHidden”添加到清单中的活动行