Android拍照,相册选择图片以及Android6.0权限管理
来源:互联网 发布:手机办公软件word 编辑:程序博客网 时间:2024/06/06 01:28
1,AndroidManifest.xml权限如下:
<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 缓存资源优先存入SDcard -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2,主要代码
package com.zj.camreainandroidm;import android.content.ContentResolver;import android.content.Intent;import android.content.pm.PackageManager;import android.database.Cursor;import android.graphics.Bitmap;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.ImageView;import android.widget.Toast;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView)findViewById(R.id.image); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (PermissionUtils.isCameraPermission(MainActivity.this, 0x007)) byCamera(); } }); findViewById(R.id.album).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (PermissionUtils.isCameraPermission(MainActivity.this, 0x009)) //打开相册 openAlbum(); } }); } //打开相册 private void openAlbum(){ Intent intent = new Intent("android.intent.action.GET_CONTENT"); intent.setType("image/*"); startActivityForResult(intent, 0x006); // 打开相册 } //请求权限回调 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 0x007: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { byCamera(); } else { Toast.makeText(this, "拍照权限被拒绝", Toast.LENGTH_SHORT).show(); } break; case 0x009: if (grantResults[1] == PackageManager.PERMISSION_GRANTED) { byCamera(); } else { Toast.makeText(this, "拍照权限被拒绝", Toast.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } private String imagePath; //打开相机 public void byCamera() { String savePath = ""; String storageState = Environment.getExternalStorageState(); if (storageState.equals(Environment.MEDIA_MOUNTED)) { savePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/camera/"; File savedir = new File(savePath); if (!savedir.exists()) { savedir.mkdirs(); } } // 没有挂载SD卡,无法保存文件 if (savePath == null || "".equals(savePath)) { System.out.println("无法保存照片,请检查SD卡是否挂载"); return; } String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); //照片命名 String fileName = timeStamp + ".jpg"; File out = new File(savePath, fileName); Uri uri = Uri.fromFile(out); //该照片的绝对路径 imagePath = savePath + fileName; Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, 0x008); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 8) { if(imagePath!=null && resultCode == RESULT_OK){ Log.e(">>>>>>>>>>....",""+imagePath); imageView.setImageBitmap(PermissionUtils.getBitmapByPath(imagePath,480,800)); } } if(requestCode==6){ //外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口 ContentResolver resolver = getContentResolver(); Uri originalUri = data.getData();//获得图片的uri Log.e("uri",">>>>>>>>>>...."+originalUri); Bitmap bm = null; try { //显得到bitmap图片 bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); //获取图片的路径 String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(originalUri, proj, null, null, null); //获得用户选择的图片的索引值 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); //将光标移至开头 ,这个很重要,不小心很容易引起越界 cursor.moveToFirst(); //最后根据索引值获取图片路径 String path = cursor.getString(column_index); Log.e("uri",">>>>>>>>>>...."+PermissionUtils.getBitmapByPath(path, 480, 800)); //绑定图片到Imageview imageView.setImageBitmap(PermissionUtils.getBitmapByPath(path, 480, 800)); //转换成file文件,上传服务器uploadImg(file) /* File file=new File(path); Log.e("uri",">>>>>>>>>>...."+file); uploadImg(file);*/ } catch (IOException e) { e.printStackTrace(); } } }}
dome下载地址:http://download.csdn.net/detail/qq_28189091/9780853
0 1
- Android拍照,相册选择图片以及Android6.0权限管理
- Android拍照,相册选择图片以及Android6.0权限管理
- Android拍照,相册选择图片以及Android6.0权限管理
- android 拍照相册选择 以及android6.0打开相册失败
- android 选择图片 相册选择 马上拍照
- Android 选择图片 相册选择 马上拍照
- Android 从相册和拍照选择图片
- Android 拍照/相册 选择图片工具
- android 拍照和选择相册图片剪切
- Android 拍照、从相册选择图片
- Android 从相册或者拍照设置头像,兼容Android6.0后权限问题
- Android6.0,7.0拍照和相册异常,运行时权限
- Android 实现从相册选择图片,拍照选择图片
- Android拍照、相册选择
- Android实现拍照,以及从相册选择图片裁剪功能同时保存在本地
- 图片拍照或相册选择的实现以及裁剪功能
- android 选择图片以及拍照,保存图片
- Android调用手机拍照以及从相册选择照片
- Android新特性介绍,ConstraintLayout完全解析
- mysql锁表问题
- io
- JSP 获取访问者真正的IP地址
- 快速重写equals、hashcode等方法汇总
- Android拍照,相册选择图片以及Android6.0权限管理
- 欢迎使用CSDN-markdown编辑器
- linux3.14.38内核编译出错
- MySQL 存储表情字符
- CentOS7安装、配置MariaDB集群问题总结
- GMTC全球移动技术大会2017参会指南
- 获取数据库连接对象
- Android NDK
- Cannot find config.m4. Make sure that you run '/usr/local/php/bin/phpize' in the top level source di