Android相机,图库获取图片

标签: Android 相机图片 兼容7.0的uri
28人阅读 评论(0) 收藏 举报
分类:
大家的APP中经常会有从手机相机、图库获取图片,这里封装了方法可以方便大家,解决了Android7.0资源uri的获取方式,兼容SDK19以上的机子,有权限请求整合,欢迎大家下架使用,评论指导也可以。
程序运行结果:

这里写图片描述
程序应用类代码:

package jason.com.carmerphoto;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import static jason.com.carmerphoto.GetPicUtil.REQUEST_PERMISSION_CAMERA;
import static jason.com.carmerphoto.GetPicUtil.REQUEST_PERMISSION_WRITE;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //控件
    private ImageView img_album;
    private Button btn_dialog;
    private TextView tv_desd;

    String imagePath = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        this.img_album = (ImageView) findViewById(R.id.img_album);
        this.btn_dialog = (Button) findViewById(R.id.btn_pic);
        this.tv_desd = (TextView) findViewById(R.id.tv_desc);
        this.btn_dialog.setOnClickListener(this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //获取选择照片后的内容,以兼容Android=<19,>19
        this.imagePath = GetPicUtil.handlePicResult(this, data, requestCode, resultCode, img_album);
        Log.v("TAG", "get_picpath=" + imagePath);
    }


    /**
     * 不处理权限的回调也可以,就是第一次获取权限,要再次点击控件触发
     *
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST_PERMISSION_CAMERA:
                //判断是否有权限
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    GetPicUtil.take_photo(this);//打开相机
                } else {
                    Toast.makeText(this, "你需要权限许可!", Toast.LENGTH_LONG).show();
                }
                break;
            case REQUEST_PERMISSION_WRITE:
                //判断是否有权限
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    GetPicUtil.openAlbum(this);//打开相册
                } else {
                    Toast.makeText(this, "你需要权限许可!", Toast.LENGTH_LONG).show();
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onClick(View v) {
        tv_desd.setText("sdk_" + Build.VERSION.SDK_INT);
        //1.弹出对话框选择 相机还是图库
        GetPicUtil.showPicDialog(this);
        //2.直接相机
//        GetPicUtil.xiangjiClick(this);
        //3.直接进入图库
//        GetPicUtil.select_photo(this);
    }
}

//大家的Androidstudio版本可能都不同,这里下载解压后不要着急打开项目,打开项目文件夹修改几个文件可以使用你本地的gradle版本,打开你原来运行过的项目替换以下代码:
1.打开项目的build.gradle文件 ,修改替换成你原有的项目代码语句,保存文件。
//classpath ‘com.android.tools.build:gradle:2.2.2’
2.打开项目gradle/warpper/gradle-wrapper.properties文件,替换保存:
//distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip
3.打开项目app/build.gradle,修改以下工具版本,打开你原来运行过的项目替换以下代码:
//compileSdkVersion 25
//buildToolsVersion “25.0.3”
//compile ‘com.android.support:appcompat-v7:25.3.1’
//compile ‘com.android.support:design:25.3.1’

本文代码Demo下载

查看评论

Android 7.0调用相机拍照,返回后显示拍照照片

Android 7.0调用相机拍照,返回后显示拍照照片,并显示到手机相册中
  • ww897532167
  • ww897532167
  • 2017-05-13 17:02:10
  • 11847

Android拍照或从系统相册获取图片

android拍照,android从系统相册选择照片,android获取图片,android调用相机
  • xuanguofeng
  • xuanguofeng
  • 2016-08-21 14:01:27
  • 7410

Android拍照和获取相册图片

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过。 再也不要问度娘了,再也不用一堆博客里找啊找了。。。 ----------------------------...
  • happy_fsyy
  • happy_fsyy
  • 2016-07-21 20:32:10
  • 5848

android 适配8.0。6.0调起手机拍照获取照片路径

用的时候直接复制即可 必要的已经写上备注,欢迎大神指点,有些代码是拼凑的,然后我自己的总结。首先先配置:在清单文件配置一下&amp;lt;provider android:name=&quo...
  • q992767879
  • q992767879
  • 2018-03-22 15:26:09
  • 204

Android--使用手机拍照获取图片路径,小米手机选择照片问题处理

Android开发选取照片问题本文主要记录使用手机自带相机拍照获取返回照片路径,以及从本地相册选取已有照片时返回Intent data; 数据处理 操作。(小米手机获取照片路径与其他手机不一致问题!...
  • github_30662571
  • github_30662571
  • 2016-12-13 10:25:05
  • 2437

Android拍照或者选取本地图片

总体流程 从selectPhotoActivity中启动图册或者相机,再根据获取的uri进行裁剪,返回uri,再对这个uri执行一系列操纵。从相册选取图片private void pickPhoto...
  • kevinjqy
  • kevinjqy
  • 2017-01-17 17:41:19
  • 688

Android调用系统图库和相机获取图片并裁剪

1、获取权限   2、点击按钮来提示选择图库还是相机 private String[]mCustomItems=new String[]{"本地相册","相机拍照"}; //显示选择相机,图库...
  • m0_37930105
  • m0_37930105
  • 2017-08-02 15:20:41
  • 2858

Android之拍照和相册选取图片并裁剪得到路径

拍照和相册选取图片并裁剪得到图片的相应路径上传服务器、
  • Android_Cll
  • Android_Cll
  • 2017-03-28 11:18:02
  • 14107

Android开发之获取相册照片和获取拍照照片

在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片...
  • Beyond0525
  • Beyond0525
  • 2013-05-17 15:38:11
  • 117340

Android从相机拍照获取图片及从相册直接获取图片

调用摄像头拍照 activity_main中代码如下: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp...
  • qq_18674097
  • qq_18674097
  • 2018-03-14 10:47:47
  • 183
    个人资料
    等级:
    访问量: 172
    积分: 39
    排名: 183万+
    文章存档