Android11文件存储,嵌入式软件开发面试题

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)!**

Android11文件存储,嵌入式软件开发面试题

上一篇:服务假死问题解决过程实记(一)——问题发现篇


下一篇:03_Linux文件和目录