栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android动态申请手机权限以及本地图片读取/保存

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android动态申请手机权限以及本地图片读取/保存

一、在AndroidManifest.xml中加入静态申请权限








    
    

 

compile 'com.squareup.okhttp3:okhttp:3.7.0'
compile 'com.squareup.okio:okio:1.12.0'
implementation 'com.alibaba:fastjson:1.1.54.android'
private ImageView imageView1;//图片显示控件

String[] mPermissionList = new String[]{//权限集合
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.READ_EXTERNAL_STORAGE};
public static final int REQUEST_PICK_IMAGE = 11101;

//按钮的点击事件
findViewById(R.id.save).setonClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
        ActivityCompat.requestPermissions(MainActivity.this, mPermissionList, 100);
    }
});

findViewById(R.id.get).setonClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
        save();
    }
});

二、判断是否具有相应的权限

    //打开相册之前先判断是否有读写权限
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 100:
                boolean writeExternalStorage = grantResults[0] == PackageManager.PERMISSION_GRANTED;
                boolean readExternalStorage = grantResults[1] == PackageManager.PERMISSION_GRANTED;
                if (grantResults.length > 0 && writeExternalStorage && readExternalStorage) {
                    getImage();
                } else {
                    Toast.makeText(this, "请设置必要权限", Toast.LENGTH_SHORT).show();
                }

                break;
        }
    }

 三、打开相册,读取本地图片

    //打开相册目录
    private void getImage() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("image/*"),
                    REQUEST_PICK_IMAGE);
        } else {
            Intent intent = new Intent(Intent.ACTION_OPEN_document);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("image/*");
            startActivityForResult(intent, REQUEST_PICK_IMAGE);
        }
    }

    //选择图片之后的回调
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
                case REQUEST_PICK_IMAGE:
                    if (data != null) {
                        Uri data1 = data.getData();
                        ImageView im = findViewById(R.id.img);
                        im.setImageURI(data1);
                    } else {
                        Toast.makeText(this, "图片损坏,请重新选择", Toast.LENGTH_SHORT).show();
                    }

                    break;
            }
        }
    }

四、保存图片至相册中

    //保存ImageView中装载的图片
    private void save() {
        imageView1.buildDrawingCache(true);
        imageView1.buildDrawingCache();
        Bitmap bitmap = imageView1.getDrawingCache();
        saveBitmapFile(bitmap);
    }
    
    private void saveBitmapFile(Bitmap bitmap) {
        File temp = new File("/storage/emulated/0/DCIM/");//保存在相册
        if (!temp.exists()) {
            temp.mkdir();
        }
        //重复保存时,覆盖原同名图片
        File file=new File(temp,new Date().getTime()+".jpg");//将要保存图片的路径和图片名称
        try {
            BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream(file));
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
            bos.flush();
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this,"文件储存失败!",Toast.LENGTH_SHORT).show();
        }
        Toast.makeText(MainActivity.this,"文件成功保存到相册:"+file.getPath(),Toast.LENGTH_SHORT).show();
    }

完毕!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281833.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号