if (i != PackageManager.PERMISSION_GRANTED) {
// 提示用户应该去应用设置界面手动开启权限
} else {
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(filePath)));
}
} else {
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(filePath)));
}
return true;
} catch (FileNotFoundException e) {
MLog.e("FileNotFoundException e.toString: " + e.toString());
e.printStackTrace();
return false;
} catch (IOException e) {
MLog.e("IOException e.toString: " + e.toString());
e.printStackTrace();
return false;
}
}
//2021/4/15 功能描述:Android10及以上保存图片到相册
public static boolean saveImageQ(Context context, Bitmap image, String name) {
Long mImageTime = System.currentTimeMillis();
String mImageFileName = MStringUtils.isNullOrEmpty(name) ? MOtherUtils.getPictureStorageTime() : name;
final ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM
- File.separator + “demo”); //图库中显示的文件夹名。
values.put(MediaStore.MediaColumns.DISPLAY_NAME, mImageFileName);
values.put(MediaStore.MediaColumns.MIME_TYPE, “image/png”);
values.put(MediaStore.MediaColumns.DATE_ADDED, mImageTime / 1000);
values.put(MediaStore.MediaColumns.DATE_MODIFIED, mImageTime / 1000);
values.put(MediaStore.MediaColumns.DATE_EXPIRES, (mImageTime + DateUtils.DAY_IN_MILLIS) / 1000);
values.put(MediaStore.MediaColumns.IS_PENDING, 1);
ContentResolver resolver = context.getContentResolver();
final Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
try {
// 写下我们截图的实际数据
try (OutputStream out = resolver.openOutputStream(uri)) {
if (!image.compress(Bitmap.CompressFormat.PNG, 100, out)) {
throw new IOException(“Failed to compress”);
}
}
// 一切都很顺利、
values.clear();
values.put(MediaStore.MediaColumns.IS_PENDING, 0);
values.putNull(MediaStore.MediaColumns.DATE_EXPIRES);
resolver.update(uri, values, null, null);
return true;
} catch (IOException e) {
MLog.e(e.getMessage());
return false;
}
}
}
对ll_dialog进行截图:
Bitmap bm = Bitmap.createBitmap(ll_dialog.getWidth(), ll_dialog.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bm);
ll_dialog.draw(canvas);
调用
RichPictureStorageUtils.isSaveImage(Activity.this, bm,name);
public static final String[] STANDARD_DIRECTORIES = {
DIRECTORY_MUSIC,
DIRECTORY_PODCASTS,
DIRECTORY_RINGTONES,
结尾
我还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料,免费分享给大家。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
领取方式:关注+点赞+点击我的GitHub 免费获取!
/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)!**