公司项目中,有个拍照设置头像功能,某天项目经理跑来跟我说,一台红米测试机上调用不了相机。
我一惊,连忙在小米1S、2S、三星note、华为、魅族上跑了一圈,发现都是好好的。然后看了下代码,感觉没任何问题。
只好告诉他,这是系统差异,不要在意这些细节。
上段调用相机的源码(不知道他们从哪拷来的)
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
try {
photoUri = getActivity().getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
getActivity().startActivityForResult(intent, CAMERA);
} catch (Exception e) {
e.printStackTrace();
}
今天,突然想起这个问题,感觉越来越不对,于是找了某个社交网站,试了下头像设置功能。
卧槽!!!!!!!竟然调出了相机!!!!!!!!
难道还有另外一种调用方式,于是上网各种找答案,但找不到啊!!!调用相机的方式都长那样,而且近段时间,谷歌打不开,不知道是不是被和谐了。
呵呵,咱是那么容易放弃的人吗。
下载apk,打开反编译工具,直接去找源码。
吐槽下某公司的程序猿,一个点击弹框事件竟然用的是ContextMenu,不是Dialog,而且弹框前还有一段不知道干嘛的代码,各种类调用,看起来像通信,直接把我带坑里去了。可是你仅仅只是弹个框选择是使用相机还是相册啊!!!!
终于花了大半天,把它调用相机的代码给找到了,一看,我哭了,心中一万头草泥马奔腾而过。
public final void c()
{
if (f())
{
Intent localIntent = new Intent("android.media.action.IMAGE_CAPTURE");
h = null;
h = new File(Environment.getExternalStorageDirectory() + "/jiayuanQDate", "temp");
localIntent.putExtra("output", Uri.fromFile(h));
this.b.startActivityForResult(localIntent, 1008);
}
}
赶紧打开调试模式,看了下photoUri的值,为null
呵呵,呵呵.......