近期做Android开发需求,涉及到需要将游戏应用的二维码保存到本地相册,以便用户可以查看分享。参考了网上stormzhang 的这篇文章,得到如下可以使用的代码:
1 | public static void saveImageToGallery(Context context, Bitmap bmp) { |
在Android4.4之前也就是以发送一个Action为“Intent.ACTION_MEDIA_MOUNTED”的广播通知执行扫描。方法如下:
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 但在Android4.4中,则会抛出以下异常:
W/ActivityManager( 498): Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=2269, uid=20016那是因为Android4.4中限制了系统应用才有权限使用广播通知系统扫描SD卡。
参考 逐Ls梦 的专栏这篇文章可得到如下解决方案替代之:
MediaScannerConnection.scanFile(this, new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" + fileName}, null, null); 即:使用MediaScannerConnection执行具体文件或文件夹进行扫描。
