Cordova PluginPicture关于红米及三星Note3拍照问题...

是时候开始写第一篇微博了...


近期在开发hybrid app发现在红米和三星Note3上面,调用拍照插件,拍完照会系统崩溃..

debug发现,拍完照以后takePicture()方法对于系统拍照后返回结果的处理processResultFromCamera()方法内imageUri变成了Null...


之前有对红米拍照会崩溃的bug进行猜测...

下面引用一下飘易的BOLG ==> http://www.piaoyi.org/mobile-app/Android-MIUI-BUG-photo-activity.html

  飘易的猜测是:由于红米miui深度定制了android系统,并且红米是整个小米系里最低端的入门机,在硬件性能上缩减严重。大白话就是修改了过多的模块而又没有考虑周全产生的bug。当系统调用拍照程序时,系统认为当前的内存还够用,activity不会被销毁,所以没有执行 onSaveInstanceState方法。但是拍照程序真正启用后,系统发现内存不够用了,即将OOM,就销毁了处于onPause或onStop的activity。这个销毁系统不会通知你,系统偷偷地干了这件事。

     

因为Picture类继承了CordovaPlugin.在CordovaPlugin里面找到了onSaveInstanceState()和onRestoreStateForActivityResult().重写方法,使用bundle.putParcelable对imageUri进行保存...在onRestoreStateForActivityResult拿取,.把结果设置为 全局变量....

<span style="white-space:pre">	</span>
        @Override
	public Bundle onSaveInstanceState() {
		Bundle savedInstanceState = new Bundle();
		savedInstanceState.putParcelable("imageUri", imageUri);
		return savedInstanceState;

	}
	
	@Override
	public void onRestoreStateForActivityResult(Bundle state, CallbackContext callbackContext) {
		super.onRestoreStateForActivityResult(state, callbackContext);
		imageUri = (Uri) state.getParcelable("imageUri");
	}


最后,解决了红米,三星Note3拍照会崩的问题...

但是,三星Note3拍照为什么还会转屏啊...明明我都已经设置了android:screenOrientation="portrait"和android:configChanges="orientation|keyboardHidden|screenSize".........





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值