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

Android 专栏收录该内容
35 篇文章 0 订阅

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


近期在开发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".........





  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值