1.添加系统权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.CAMERA" />

2.点击拍照,判断是否添加存储,拍照权限

private static final int CODE_CAMERA_REQUEST = 0xa1;private void shenqingPermission() {        if (ContextCompat.checkSelfPermission                (this,                        Manifest.permission.CAMERA)                != PackageManager.PERMISSION_GRANTED ||                ContextCompat.checkSelfPermission                        (this,                              Manifest.permission.WRITE_EXTERNAL_STORAGE)                        != PackageManager.PERMISSION_GRANTED) {            //申请相机权限            shenqing2();        } else {            //打开相册            Toast.makeText(this, "有权限,直接打开相机", Toast.LENGTH_SHORT).show();            //拍照            takePicture(this,  CODE_CAMERA_REQUEST,"ddd");        }    }public static final int daihao2 = 0x02;private void shenqing2() {//申请权限的方法        ActivityCompat.requestPermissions(this,                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,                        Manifest.permission.CAMERA}, daihao2);    }

申请权限的回调onRequestPermissionsResult

 @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        switch (requestCode) {            case daihao2:                if (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED                        && grantResults[0] == PackageManager.PERMISSION_GRANTED                        ) {                    //拍照                    takePicture(this, CODE_CAMERA_REQUEST,null);                } else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    Toast.makeText(this, "您拒绝了拍照权限,所以不能拍照", Toast.LENGTH_SHORT).show();                } else if (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED) {                    Toast.makeText(this, "您拒绝了存储权限,所以不能拍照", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(this, "您拒绝了存储,拍照权限,所以不能拍照", Toast.LENGTH_SHORT).show();                }                break;        }    }

调用系统相机拍照拍照

     // 原图地址    private String imgPath;    // 临时保存文件名    String fileName = null;    /**     *     * 读取权限 授权之后 调用此方法     * @param activity    当前activity     * @param requestCode 调用系统相机请求码     */    public void takePicture(@NonNull Activity activity,@NonNull  int requestCode ,@Nullable String imgFileName) {        String baseUrl = Environment.getExternalStorageDirectory().getAbsolutePath()+"/my_img";        fileName = "";        if (TextUtils.isEmpty(imgFileName))            fileName = System.currentTimeMillis()+".jpg";        else            fileName = imgFileName+".jpg";        // 保存拍照的路径        Uri mImageCaptureUri;        // 跳转系统相机的intent        Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        // 根据不同的Android版本uri不一样        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //android7.0以上            ContentValues contentValues = new ContentValues(1);           String absolutePath = new File(baseUrl, fileName).getAbsolutePath();            contentValues.put(MediaStore.Images.Media.DATA, absolutePath);            mImageCaptureUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);        } else {            File file = new File(baseUrl, fileName);            mImageCaptureUri = Uri.fromFile(file);        }        takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);        startActivityForResult(takeIntent, requestCode);    }

拍照的回调onActivityResult

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);//拍照成功 resultCode == RESULT_OK        if (resultCode == RESULT_OK && requestCode ==CODE_CAMERA_REQUEST) {            imgPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/my_img/"+fileName;            showImages(BitmapFactory.decodeFile(imgPath));        }    }//显示图片private void showImages(Bitmap bitmap) {        img.setImageBitmap(bitmap);    }

更多相关文章

  1. Android图形系统之Surface、SurfaceView、SurfaceHolder及Surfac
  2. android java调用命令行给文件赋权限
  3. 如何获取 android 的系统日志 logcat
  4. Android调用系统拍摄视频
  5. Android开发_Android如何获取开机启动项列表_查找package是否有
  6. Android:读取本地相册与相机获取图片上传到服务器(用字符串的形式
  7. android 系统属性 之 自定义属性
  8. android系统目录解析
  9. android permission权限

随机推荐

  1. 总结PHP-FPM与Nginx的通信机制
  2. PHP中如何使用TUS协议来实现大文件的断点
  3. 何为是高性能优化PHP-FPM
  4. PHP+MySQL实现在线测试答题示例
  5. 实例详解PHP中 $_POST的$_GET的用法和区
  6. 实现PHP微信红包API接口
  7. PHP连接MySQL数据库操作实现
  8. 掌握php短信接口代码
  9. 掌握PHP语言对接抖音快手小红书视频/图片
  10. PHP+MySql实现简单的留言板功能