今天早上想给上次的头像增加拍照上传功能,不单单是相册选择。于是遇见了好多麻烦。

首先,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头像--拍照上传相关推荐

  1. html5+php调用android手机图片,HTML5拍照上传图片Phonegap封装HTML5调用Android相机拍照上传到PHP端...

    HTML5拍照: 参考网址:http://blog.csdn.net/hfahe/article/details/7354912 上传部分也可以用ajax: $.ajax({ url: 'http:/ ...

  2. Android自定义拍照上传界面,Android自定义dialog——设置头像(拍照,相册)

    Android自定义dialog--设置头像(拍照,相册) 需求场景:个人信息设置,点击头像,在界面上弹出一个弹框,用户选择"拍照"/"从图库选择",选择照片后 ...

  3. Android头像(图片)上传/文件上传

    1.前言 作为初学者来说,想必对上传的数据格式肯定比较模糊,一般传递参数给后台,常用的是使用基本数据类型拼装成json格式.头像上传也可以使用String类型进行上传(极客学院有相关的视频,可以自行了 ...

  4. 【Demo】HTML5 拍照上传

    本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...

  5. html5手机拍照上传

    转自: http://www.54php.cn/default/150.html ,经测试已在我自己服务器上成功运行.以下为原始文章: [Demo]HTML5 拍照上传 作者:编程浪子 •  原创•  ...

  6. 小米4拍照上传时候,上传的图片size为零

    在做android图片拍照上传时候,对于小米4机型来说,照片成形要几秒钟的时间,如果是上传时间太短的话,就可能上传的图片不存在(图片文件size=0) 所以在上传的时候要判断file是否size==0 ...

  7. php拍视频上传,php视频拍照上传头像功能实现代码分享

    现在手机拍照很火,那么如何使用手机拍照并上传头像呢?原因很简单,就是数据传递,首先手机传递照片信息,既不是post传递也不是get函数传递,这个另外一种数据 如果要在php中实现视频拍照我们需要借助于 ...

  8. Android拍照上传代码样例

    2019独角兽企业重金招聘Python工程师标准>>> Android拍照上传代码样例 1.LoginWindow.java --登录窗口 package com.hemi.rhet ...

  9. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 如果不知道如何上传 ...

最新文章

  1. 附加到IIS进程调试页面
  2. lua os.date函数定义和示例
  3. docker中创建MySQL及在外部使用Navicat连接
  4. 通过Nginx简单安装
  5. axios,vue-axios在项目中的应用
  6. ios 图片居中裁剪_IOS图片裁剪和小图看大图动画
  7. 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞
  8. 鹰眼系统原理_飞思卡尔智能车一:山外鹰眼摄像头使用原理
  9. 服务器刷新率和显示器刷新率,什么是屏幕刷新率
  10. 电子学会2022年9月青少年软件编程(图形化)等级考试试卷(三级)答案解析
  11. CTFWeb——Bugku秋名山老司机 详细题解
  12. 关于“PS中用魔棒选取之后拖到另一个图层中怎么没颜色了”的解决方法
  13. 不安装Office操作Excel文件(.xlsx)
  14. TWEN-ASR ONE 语音识别系列教程(1)--- 运行第一个程序
  15. 51单片机的电子密码锁的设计与仿真
  16. 在线教育app开发,教学管理系统的开发方案设计
  17. 新版电商运营学习路线图(全套视频笔记素材合集)
  18. deepin/linux下svn客户端工具
  19. 【英语六级】【仔细阅读】(3)
  20. iOS 好心态带来好人生

热门文章

  1. C++ 判断一个数是不是素数
  2. Java——闰年判断
  3. 使用Pillow库处理图像文件
  4. 【无标题】RADICAL ANALYSIS NETWORK FOR ZERO-SHOT LEARNING IN PRINTED CHINESE CHARACTER RECOGNITION
  5. springboot的filter 过滤器的使用
  6. Magichub重口音对话ASR挑战赛圆满结束
  7. Protostuff的使用
  8. usb右下角有显示,计算机没显示,插入U盘后电脑桌面右下角的系统任务栏不显示USB图标...
  9. 大企业HR透露:什么样的应聘者更易被青睐!
  10. js 兼容性封装获取第一个子元素,最后一个子元素,下一个兄弟元素,上一个兄弟元素