本文实例为大家分享了 Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下

1.Android6.0系统,对于权限的使用都是需要申请,选择图片和拍照需要申请Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE这两个权限。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {   ActivityCompat.requestPermissions((Activity) this,     new String[] { Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},     REQUEST_STORAGE_READ_ACCESS_PERMISSION);  }

2.通过图片选择器MultiImageSelector来管理: 选择模式、最大选择数量、是否启动相机等功能。

3.点击图片选择按钮跳转到MultiImageSelectorActivity类,其布局如下:(一个Toobar + 一个FrameLayout)

<?xml version="1.0" encoding="utf-8"?>   

4.调用如下方法填充展示图片的fragment(MultiImageSelectorFragment)。

   getSupportFragmentManager().beginTransaction()     .add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))     .commit();

5.MultiImageSelectorFragment布局用gridview显示从相册获取的图片

<?xml version="1.0" encoding="utf-8"?>    

6调用android.support.v4.app.LoaderManager.class类里面的LoaderCallbacks方法,等加载完成后给mImageAdapter设置数据。

mImageAdapter.setData(images);

7.当允许拍照的时候,显示拍照按钮,调用系统相机功能。

 mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {    if (mImageAdapter.isShowCamera()) {     if (i == 0) {      showCameraAction();     } else {      Image image = (Image) adapterView.getAdapter().getItem(i);      selectImageFromGrid(image, mode);     }    } else {     Image image = (Image) adapterView.getAdapter().getItem(i);     selectImageFromGrid(image, mode);    }   }  });

调用相机功能

 /**  * Open camera  */ private void showCameraAction() {  if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)    != PackageManager.PERMISSION_GRANTED){   requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,     getString(R.string.mis_permission_rationale_write_storage),     REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);  }else {   Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   if (intent.resolveActivity(getActivity().getPackageManager()) != null) {    try {     mTmpFile = FileUtils.createTmpFile(getActivity());    } catch (IOException e) {     e.printStackTrace();    }    if (mTmpFile != null && mTmpFile.exists()) {     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));     startActivityForResult(intent, REQUEST_CAMERA);    } else {     Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show();    }   } else {    Toast.makeText(getActivity(), R.string.mis_msg_no_camera, Toast.LENGTH_SHORT).show();   }  } }

选择图片

 /**  * notify callback  * @param image image data  */ private void selectImageFromGrid(Image image, int mode) {  if(image != null) {   if(mode == MODE_MULTI) {    if (resultList.contains(image.path)) {     resultList.remove(image.path);     if (mCallback != null) {      mCallback.onImageUnselected(image.path);     }    } else {     if(selectImageCount() == resultList.size()){      Toast.makeText(getActivity(), R.string.mis_msg_amount_limit, Toast.LENGTH_SHORT).show();      return;     }     resultList.add(image.path);     if (mCallback != null) {      mCallback.onImageSelected(image.path);     }    }    mImageAdapter.select(image);   }else if(mode == MODE_SINGLE){    if(mCallback != null){     mCallback.onSingleImageSelected(image.path);    }   }  } }

本文已被整理到了《Android微信开发教程汇总》,欢迎大家学习阅读。

源码下载:http://xiazai.jb51.net/201611/yuanma/AndroidselectPicture(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. android webview加载网页不显示图片问题
  2. Android之Volley框架加载网络图片的三种方式
  3. 今天的小收获
  4. Android启动过程详解(4)——SystemServer
  5. Android之浅谈activity生命周期
  6. Android(安卓)存储路径选择方法
  7. Android(安卓)Service两种启动启动方式
  8. Android图片选择器、多选框架
  9. Android开发中遇到的bug(2)

随机推荐

  1. Android版本检测\自动更新 (转的别人的)
  2. Android判断当前网络类型是否为5G
  3. Android(安卓)代码监控apk安装,卸载,替换
  4. Android(安卓)studio:Failed to create J
  5. android scroll view infinite scroll
  6. Android(安卓)Dev入门笔记
  7. android外部数据库的导入使用
  8. Android语音识别功能使用
  9. Android(安卓)获取TextView总行数
  10. Android(安卓)Studio 更新SDK 腾讯镜像使