由于各个手机厂商对原声Android系统的阉割,造成在各种手机上做测试时,通过App保存的图片不能迅速的显示在系统相册内。本实验所使用的测试机是红米2A(Ps: 雷神着实给手机阉割的很是难受啊,简直了), 可以完美的做到将图片保存到本地,并及时更新到系统相册.
国际惯例,先上代码
1 | /** |
注释已经比较清晰,就不啰嗦了
¶添加权限
1 | <uses-permission android:name="android.permission.INTERNET" /> |
¶可能遇到的问题
< 1 > 使用广播的问题:
在Android 4.4中或之后的版本,若采用如下方式更新系统相册:
1 | mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); |
将会抛出如下异常:(这是由Android 4.4中限制了系统应用才有权限使用广播通知系统扫描SD卡, 且这种方法耗时间)
1 | Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=2269, uid=20016 |
< 2 > 解决方案:
使用MediaScannerConnection对具体文件或文件夹进行扫描。
(扫描文件夹方式在部分定制rom中无效,极力建议扫描具体文件)
1 | MediaScannerConnection.scanFile(this, new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" + fileName} |
END