摘要:使用外部存储需要获取外部存储的访问权限。同时期待您的关注,感谢您的阅读,谢谢
极力推荐文章:欢迎收藏
Android 干货分享
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
保存外部存储需要申请权限
外部存储使用案例(保存,读取,删除图片)
Android 设备支持外部存储,比如SD卡等,保存在外部存储的数据具有全局可读性,可供在其他设备比如电脑上阅读,修改等。使用外部存储需要获取外部存储的访问权限
这个很重要,不然无法操作SD 卡,
2. 外部存储使用案例(保存,读取,删除图片)
实现效果
判断是否挂载 SD 卡方法/** * 1.判断SD卡是否挂载 * **/ public static boolean isMounted() { String state = Environment.getExternalStorageState(); return state.equals(Environment.MEDIA_MOUNTED); }
SD 保存图片,删除图片、显示图片的方法
保存图片到SD卡保存图片到SD卡 实现代码如下:
// 保存图片的方法 public void BtnSaveImage(View view) { // 获取图片类型 bitmap Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 将bitmap 压缩成byte类型 并保存到outputstream中 bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); bitmap.recycle(); boolean saveimg = SaveImg(getApplicationContext(), "photo.png", baos.toByteArray()); if (saveimg) { Toast.makeText(getApplicationContext(), "保存成功" + store_path, Toast.LENGTH_SHORT).show(); } try { baos.close(); } catch (IOException e) { e.printStackTrace(); } } // 保存图片的方法 public static boolean SaveImg(Context context, String filename, byte[] data) { // 判断是否挂载SD卡 if (!isMounted()) { Toast.makeText(context, "SD卡未安装", Toast.LENGTH_SHORT).show(); return false; } File dir = new File(store_path); // 创建文件目录 if (!dir.exists()) { dir.mkdirs(); } try { // 向文件目录 dir中写文件filename FileOutputStream fos = new FileOutputStream(new File(dir, filename)); fos.write(data); fos.close(); return true; } catch (IOException e) { e.printStackTrace(); Log.i("TAG", "IOException..." + e); return false; } }删除图片的方法
删除图片 代码实现代码实现如下:
public void BtnDeleteImage(View view) { DeletleImg(getApplicationContext(), "photo.png"); } // 删除图片 public static void DeletleImg(Context context, String filename) { File dirfile = new File(store_path + filename); // 判断文件是否存在 if (!dirfile.exists()) { Toast.makeText(context, "文件不存在", Toast.LENGTH_SHORT).show(); return; } if (dirfile.isDirectory()) { String[] childdir = dirfile.list(); for (int i = 0; i < childdir.length; i++) { new File(dirfile, childdir[i]).delete(); } } dirfile.delete(); }读取显示图片的方法
读取显示图片代码实现如下:
// 读取图片 public void BtnReadImage(View view) { Bitmap readImg = ReadImg(getApplicationContext(), "photo.png"); if (readImg == null) { Toast.makeText(getApplicationContext(), "读取失败" + store_path, Toast.LENGTH_SHORT).show(); } else { ((ImageView) findViewById(R.id.img_external)) .setImageBitmap(readImg); } } // 读取图片 public static Bitmap ReadImg(Context context, String filename) { // 判断是否挂载SD卡 if (!isMounted()) { Toast.makeText(context, "SD卡未安装", Toast.LENGTH_SHORT).show(); return null; } // 获取文件路径下的文件名称 File imgFile = new File(store_path, filename); if (imgFile.exists()) { Log.i("TAG", "imgFile" + imgFile.getAbsolutePath()); // 将路径下的文件转换成 bitmap return BitmapFactory.decodeFile(imgFile.getAbsolutePath()); } else { Toast.makeText(context, "文件不存在", Toast.LENGTH_SHORT).show(); } return null; }
布局如下:
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75893.html
阅读 3464·2021-11-24 11:17
阅读 2224·2021-11-15 11:38
阅读 3353·2021-10-14 09:42
阅读 2921·2019-08-30 15:54
阅读 1891·2019-08-28 18:09
阅读 511·2019-08-26 11:48
阅读 1616·2019-08-26 10:48
阅读 2132·2019-08-26 10:45