COM

IT技术2年前 (2022)更新 投稿用户
0

最近线上报错,有个用户接连crash了10次左右,查看了下堆栈信息,发现是提示com.android.camera.action.CROP这个Intent找不到,报了ActivityNotFound的错误。根据经验得出结论,这个用户的设备上,肯定是去掉了支撑Crop的使用,所以直接做Intent隐私跳转到这会crash,思考了下,处理思路是在跳转前做检测,或者是大局做检测。

大局检测的方式:
publicbooleanisAvailable(Contextcontext,Intentintent){
PackageManagerpackageManager=context.getPackageManager();
Listlist=packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);returnlist.size()>0;
}
经过测验,在com.android.camera.action.CROP没效果,只能放弃,可是这个对某些Intent是支撑的,也是一种办法
第二种就是在跳转前检测:
privatevoidcrop(StringimagePath){
Filefile=newFile(FileUtils.createRootPath(this)+”/”+System.currentTimeMillis()+”.jpg”);
cropImagePath=file.getAbsolutePath();
Intentintent=newIntent(“com.android.camera.action.CROP”);
intent.setDataAndType(getImageContentUri(newFile(imagePath)),”image/*”);
intent.putExtra(“crop”,”true”);
intent.putExtra(“aspectX”,config.aspectX);
intent.putExtra(“aspectY”,config.aspectY);
intent.putExtra(“outputX”,config.outputX);
intent.putExtra(“outputY”,config.outputY);
intent.putExtra(“scale”,true);
intent.putExtra(“scaleUpIfNeeded”,true);
intent.putExtra(“return-data”,false);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file));
intent.putExtra(“outputFormat”,Bitmap.CompressFormat.JPEG.toString());
intent.putExtra(“noFaceDetection”,true);
startActivityForResult(intent,IMAGE_CROP_CODE);
}
我修改后的检测代码如下:
privatebooleancanCrop(StringimagePath){
Filefile=newFile(FileUtils.createRootPath(this)+”/”+System.currentTimeMillis()+”.jpg”);
Intentintent=newIntent(“com.android.camera.action.CROP”);
intent.setDataAndType(getImageContentUri(newFile(imagePath)),”image/*”);
intent.putExtra(“crop”,”true”);
intent.putExtra(“aspectX”,config.aspectX);
intent.putExtra(“aspectY”,config.aspectY);
intent.putExtra(“outputX”,config.outputX);
intent.putExtra(“outputY”,config.outputY);
intent.putExtra(“scale”,true);
intent.putExtra(“scaleUpIfNeeded”,true);
intent.putExtra(“return-data”,false);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file));
intent.putExtra(“outputFormat”,Bitmap.CompressFormat.JPEG.toString());
intent.putExtra(“noFaceDetection”,true);if(intent.resolveActivity(getPackageManager())!=null){returntrue;
}else{//没有装置所需使用returnfalse;
}
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章