一、在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();
}
完毕!



