Android头像--拍照上传
今天早上想给上次的头像增加拍照上传功能,不单单是相册选择。于是遇见了好多麻烦。
首先,dialog改成两个选项;
AlertDialog.Builder builder = new AlertDialog.Builder(Myfragment_tx.this);builder.setTitle("选择图片");final String[] items = {"拍照","从相册中选择"};builder.setItems(items, new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog, int which){switch (which){case 0:openCamera();break;case 1:Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);intent.setType("image/*");startActivityForResult(intent, 0);break;}}});AlertDialog dialog = builder.create();dialog.setCanceledOnTouchOutside(true);dialog.show();
public void openCamera(){SimpleDateFormat formatter = new SimpleDateFormat ("yyyy_MM_dd_HH_mm_ss");Date curDate = new Date(System.currentTimeMillis());//获取当前时间String str = formatter.format(curDate);Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File file = new File(Environment.getExternalStorageDirectory()+"/lrsa/img/","head"+str+".jpg");outPutFile = Uri.fromFile(file);intent1.putExtra(MediaStore.EXTRA_OUTPUT, outPutFile);startActivityForResult(intent1, 1);}
然后测试就炸了,开始修正工作,告诉是这个样子的---->
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=android/com.android.internal.app.ResolverActivity clip={text/uri-list U:file:///storage/emulated/0/lrsa/img/test.jpg} (has extras) } from ProcessRecord{7c18b6c 9475:com.dareway.apps.lrsa/u0a246} (pid=9475, uid=10246) with revoked permission android.permission.CAMERA
好吧,看在的英语水平还过关的份上,我认出貌似权限的问题,找相机权限
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
但是这两个都加了,再菜也不能忘记这两个对吧,改动了一下发现还是不可用。就想到一个问题,好吧,又是该死的版本权限问题,Android6.0和以前不一样,旧的可以直接那么写,但新的要求这么玩--->
if( MainActivity.this.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ){// 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义)requestPermissions(new String[]{ Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CALL);}
public void onRequestPermissionsResult(int requestCode,String[] permissions, int[] grantResults){super.onRequestPermissionsResult(requestCode, permissions,grantResults);.......}
重要的事情说三遍:请记得动态授权,动态授权,动态授权。 相机启动了,也拍照了,然后就结束了,对,平平淡淡的没有反应,这是什么鬼,这不是我的需求!这是之前的代码,我做个一个intent data检测,看看是不是为空,结果用相机拍照,果然会为空,data为null。 protected void onActivityResult(int requestCode, int resultCode, Intent data) { Bitmap bitmap = null; if(data==null){ return;//当data为空的时候,不做任何处理 } if(requestCode==0){ try { //通过URI得到输入流 InputStream inputStream = getContentResolver().openInputStream(data.getData()); //通过输入流得到bitmap对象 BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; bitmap = BitmapFactory.decodeStream(inputStream,null,opts); filePath=getPath.getPath(this,data.getData()); } catch (IOException e) { e.printStackTrace(); } } imageView.setImageBitmap(bitmap); }
看了看问题在这里-->File file = new File(Environment.getExternalStorageDirectory()+"/lrsa/img/","head"+str+".jpg");outPutFile = Uri.fromFile(file);intent1.putExtra(MediaStore.EXTRA_OUTPUT, outPutFile);
据说在Camera应用程序,有如何处理返回值data问题!人家是这么玩的--->默认情况下,即不需要指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);照相机有自己默认的存储路径,但是如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据!这是真的。然后我改成这个模样了--->if(requestCode==1){InputStream inputStream = null;try {inputStream = getContentResolver().openInputStream(outPutFile);//通过输入流得到bitmap对象BitmapFactory.Options opts = new BitmapFactory.Options();opts.inSampleSize = 4;bitmap = BitmapFactory.decodeStream(inputStream,null,opts);filePath=getPath.getPath(this,outPutFile);} catch (FileNotFoundException e) {e.printStackTrace();}}else {return;//当data为空的时候,不做任何处理}
然后暂时还没发现什么问题。这只是我的笔记,不是技术贴,所以不严谨,有问题欢迎讨论。
Android头像--拍照上传相关推荐
- html5+php调用android手机图片,HTML5拍照上传图片Phonegap封装HTML5调用Android相机拍照上传到PHP端...
HTML5拍照: 参考网址:http://blog.csdn.net/hfahe/article/details/7354912 上传部分也可以用ajax: $.ajax({ url: 'http:/ ...
- Android自定义拍照上传界面,Android自定义dialog——设置头像(拍照,相册)
Android自定义dialog--设置头像(拍照,相册) 需求场景:个人信息设置,点击头像,在界面上弹出一个弹框,用户选择"拍照"/"从图库选择",选择照片后 ...
- Android头像(图片)上传/文件上传
1.前言 作为初学者来说,想必对上传的数据格式肯定比较模糊,一般传递参数给后台,常用的是使用基本数据类型拼装成json格式.头像上传也可以使用String类型进行上传(极客学院有相关的视频,可以自行了 ...
- 【Demo】HTML5 拍照上传
本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...
- html5手机拍照上传
转自: http://www.54php.cn/default/150.html ,经测试已在我自己服务器上成功运行.以下为原始文章: [Demo]HTML5 拍照上传 作者:编程浪子 • 原创• ...
- 小米4拍照上传时候,上传的图片size为零
在做android图片拍照上传时候,对于小米4机型来说,照片成形要几秒钟的时间,如果是上传时间太短的话,就可能上传的图片不存在(图片文件size=0) 所以在上传的时候要判断file是否size==0 ...
- php拍视频上传,php视频拍照上传头像功能实现代码分享
现在手机拍照很火,那么如何使用手机拍照并上传头像呢?原因很简单,就是数据传递,首先手机传递照片信息,既不是post传递也不是get函数传递,这个另外一种数据 如果要在php中实现视频拍照我们需要借助于 ...
- Android拍照上传代码样例
2019独角兽企业重金招聘Python工程师标准>>> Android拍照上传代码样例 1.LoginWindow.java --登录窗口 package com.hemi.rhet ...
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 如果不知道如何上传 ...
最新文章
- 附加到IIS进程调试页面
- lua os.date函数定义和示例
- docker中创建MySQL及在外部使用Navicat连接
- 通过Nginx简单安装
- axios,vue-axios在项目中的应用
- ios 图片居中裁剪_IOS图片裁剪和小图看大图动画
- 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞
- 鹰眼系统原理_飞思卡尔智能车一:山外鹰眼摄像头使用原理
- 服务器刷新率和显示器刷新率,什么是屏幕刷新率
- 电子学会2022年9月青少年软件编程(图形化)等级考试试卷(三级)答案解析
- CTFWeb——Bugku秋名山老司机 详细题解
- 关于“PS中用魔棒选取之后拖到另一个图层中怎么没颜色了”的解决方法
- 不安装Office操作Excel文件(.xlsx)
- TWEN-ASR ONE 语音识别系列教程(1)--- 运行第一个程序
- 51单片机的电子密码锁的设计与仿真
- 在线教育app开发,教学管理系统的开发方案设计
- 新版电商运营学习路线图(全套视频笔记素材合集)
- deepin/linux下svn客户端工具
- 【英语六级】【仔细阅读】(3)
- iOS 好心态带来好人生
热门文章
- C++ 判断一个数是不是素数
- Java——闰年判断
- 使用Pillow库处理图像文件
- 【无标题】RADICAL ANALYSIS NETWORK FOR ZERO-SHOT LEARNING IN PRINTED CHINESE CHARACTER RECOGNITION
- springboot的filter 过滤器的使用
- Magichub重口音对话ASR挑战赛圆满结束
- Protostuff的使用
- usb右下角有显示,计算机没显示,插入U盘后电脑桌面右下角的系统任务栏不显示USB图标...
- 大企业HR透露:什么样的应聘者更易被青睐!
- js 兼容性封装获取第一个子元素,最后一个子元素,下一个兄弟元素,上一个兄弟元素