午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android 圖片保存到相冊(cè)不顯示的解決方案(兼容Android 10及更高版本)

瀏覽:20日期:2022-09-19 10:31:56
前言

寫了一個(gè)demo,簡(jiǎn)單邏輯就是:在一個(gè)圖片上添加一行文字或者是水印,并且保存到系統(tǒng)相冊(cè),也就是我們手機(jī)上的圖庫(kù)。前面編輯圖片添加水印都沒(méi)有問(wèn)題,到后面保存到系統(tǒng)相冊(cè)出現(xiàn)了問(wèn)題:顯示不出來(lái)圖片。

問(wèn)題

在 Android 10 之前保存系統(tǒng)相冊(cè)的三步驟:

保存圖片到手機(jī) 把圖片插入到手機(jī)圖庫(kù) 發(fā)廣播更新

代碼如下:

public static void savePhotoAlbum(Context context, Bitmap bmp) { // 首先保存圖片 File appDir = new File(Environment.getExternalStorageDirectory(), 'Boohee'); if (!appDir.exists()) {appDir.mkdir(); } String fileName = System.currentTimeMillis() + '.jpg'; File file = new File(appDir, fileName); try {FileOutputStream fos = new FileOutputStream(file);bmp.compress(CompressFormat.JPEG, 100, fos);fos.flush();fos.close(); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace();}// 其次把文件插入到系統(tǒng)圖庫(kù) try {MediaStore.Images.Media.insertImage(context.getContentResolver(),file.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) {e.printStackTrace(); } // 最后通知圖庫(kù)更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse('file://' + path)));}

出現(xiàn)的問(wèn)題:圖片不顯示,也就是說(shuō)沒(méi)有更新到系統(tǒng)圖庫(kù)中。

細(xì)心的小伙伴會(huì)發(fā)現(xiàn),上段代碼有兩處地方廢棄的方法:

MediaStore.Images.Media.insertImage(context.getContentResolver(),file.getAbsolutePath(), fileName, null);

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse('file://' + path)));解決問(wèn)題

下面是解決上面的問(wèn)題,并兼容 Android10 版本:

/** * 添加水印并保存到系統(tǒng)相冊(cè) */ private void imgMerge() {new Thread(() -> { try {Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), 'newFile.jpg');if (!file.exists()) { file.createNewFile();}//添加水印文字位置。Bitmap newBitmap = addTextWatermark(bitmap, '測(cè)試demo示例');//保存到系統(tǒng)相冊(cè)savePhotoAlbum(newBitmap, file); } catch (Exception e) {e.printStackTrace(); }}).start(); }/** * 保存到相冊(cè) * * @param src 源圖片 * @param file 要保存到的文件 */ private void savePhotoAlbum(Bitmap src, File file) {if (isEmptyBitmap(src)) { return;}//先保存到文件OutputStream outputStream;try { outputStream = new BufferedOutputStream(new FileOutputStream(file)); src.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); if (!src.isRecycled()) {src.recycle(); }} catch (FileNotFoundException e) { e.printStackTrace();}//再更新圖庫(kù)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DISPLAY_NAME, file.getName()); values.put(MediaStore.MediaColumns.MIME_TYPE, getMimeType(file)); values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM); ContentResolver contentResolver = getContentResolver(); Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); if (uri == null) {return; } try {outputStream = contentResolver.openOutputStream(uri);FileInputStream fileInputStream = new FileInputStream(file);FileUtils.copy(fileInputStream, outputStream);fileInputStream.close();outputStream.close(); } catch (IOException e) {e.printStackTrace(); }} else { MediaScannerConnection.scanFile( getApplicationContext(), new String[]{file.getAbsolutePath()}, new String[]{'image/jpeg'}, (path, uri) -> {// Scan Completed });} }

發(fā)送廣播和插入MediaProvider兩種方式添加圖片到相冊(cè),這兩種方式已經(jīng)官方廢棄了。在 Android 10版本以及更高版本使用上面的方法,才能有效解決不顯示圖片的問(wèn)題。

做個(gè)記錄!

以上就是Android 圖片保存到系統(tǒng)相冊(cè)不顯示的解決方案(兼容Android 10及更高版本)的詳細(xì)內(nèi)容,更多關(guān)于Android 圖片保存到相冊(cè)不顯示的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 亚洲综合久久久 | 六月丁香激情综合 | 天天夜夜骑 | 日韩视频在线一区二区 | 琪琪久久 | 国产精品成人在线观看 | www.色人阁 | 偷拍欧美亚洲 | 欧美综合网站 | 亚洲一区二区影院 | 欧美区在线 | 加勒比婷婷色综合久久 | 久久女人天堂 | 中字av在线 | 国产精品美女网站 | 亚洲国产精品久久 | 中文字幕第31页 | 日韩视频在线观看一区二区 | 色男人的天堂 | 黄色在线网站 | 毛片毛片女人毛片毛片 | 成人午夜在线观看 | 亚洲三级国产 | 91亚洲国产成人精品一区 | 日韩综合色 | 青青草原在线免费观看视频 | 天天躁日日躁狠狠躁 | 日韩大片免费看 | 三年中国中文观看免费播放 | 色呦呦一区 | 成人黄色免费网 | 国精产品久拍自产在线网站 | 国产日韩一区二区 | 三级自拍视频 | 成人国产视频在线观看 | 国精品人伦一区二区三区蜜桃 | 国产精品入口 | 中日韩中文字幕 | 波多野结衣三区 | 高清成人在线 | 久久久久久久一区二区 |