一、保存外部存儲需要申請權限
二、外部存儲使用案例(保存,讀取,刪除圖片)
一、 保存外部存儲需要申請權限
Android
設備支持外部存儲,比如SD
卡等,保存在外部存儲的數據具有全局可讀性,可供在其他設備比如電腦上閱讀,修改等。使用外部存儲需要獲取外部存儲的訪問權限
。
這個很重要,不然無法操作SD
卡,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
二、外部存儲使用案例(保存,讀取,刪除圖片)
1. 實現效果
外部存儲保存圖片的方法
2. 判斷是否掛載 SD 卡方法
/**
* 1.判斷SD卡是否掛載
* **/
public static boolean isMounted() {
String state = Environment.getExternalStorageState();
return state.equals(Environment.MEDIA_MOUNTED);
}
SD 保存圖片,刪除圖片、顯示圖片的方法
3. 保存圖片到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;
}
}
4. 刪除圖片的方法
刪除圖片 代碼實現代碼實現如下:
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();
}
5.讀取顯示圖片的方法
讀取顯示圖片代碼實現如下:
// 讀取圖片
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;
}
6. 布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/img_external"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_external_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="BtnSaveImage"
android:text="保存圖片到SD卡" />
<Button
android:id="@+id/btn_external_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="BtnDeleteImage"
android:text="刪除SD卡 圖片" />
<Button
android:id="@+id/btn_external_read"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="BtnReadImage"
android:text="顯示SD卡 圖片" />
<span class="hljs-name"LinearLayout>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Android
+關注
關注
12文章
3937瀏覽量
127431 -
數據
+關注
關注
8文章
7045瀏覽量
89062 -
SD卡
+關注
關注
2文章
565瀏覽量
63909
發布評論請先 登錄
相關推薦
SDHC高容量SD存儲卡
SDHC是“High Capacity SD Memory Card”的縮寫,即“高容量SD存儲卡”,在其中規定SDHC是符合新的規范、且容量大于2GB小于等于32GB的SD
發表于 02-17 11:59
?1604次閱讀
DSC的SD存儲卡接口設計解析
引 言 SD存儲卡(Secure Digital Memory Card)由SD聯盟(松下、東芝及美國SanDisk公司)于1999年8月共同開發研制,是一種基于半導體快閃存儲器的新一
發表于 11-03 10:18
?4次下載
全新SD Express存儲卡推出 速度趕超SSD
在SD組織的展臺上, 小編發現了全新的SD Express存儲卡,SD協會稱這是全新的基于第七代SD標準制造的
發表于 07-02 09:25
?1901次閱讀
SD/micro SD存儲卡介紹
SD卡有不少規范,常用包含存儲空間和存儲速度兩種,廠商會把滿足的規范的圖標印在卡面上,所以通過卡上有的規格,就能很快判斷出這張
mmc卡的使用方法 mmc卡和sd卡的區別
MMC卡的使用方法 MMC卡(MultiMediaCard)是一種廣泛使用的小型存儲卡,主要用于手機、數碼相機等便攜式設備。以下是MMC卡的
評論