Android中訪問sdcard路徑的幾種方式

来源:http://www.cnblogs.com/panhouye/archive/2017/01/03/6246395.html
-Advertisement-
Play Games

以前的Android(4.1之前的版本)中,SDcard路徑通過“/sdcard”或者“/mnt/sdcard”來表示,而在JellyBean(安卓4.1)系統中修改為了" /storage/sdcard0",還會有多個SDcard的情況。目前為了保持和之前代碼的相容,SDcard路徑做了Link映 ...


以前的Android(4.1之前的版本)中,SDcard路徑通過“/sdcard”或者“/mnt/sdcard”來表示,而在JellyBean(安卓4.1)系統中修改為了" /storage/sdcard0",還會有多個SDcard的情況。目前為了保持和之前代碼的相容,SDcard路徑做了Link映射。為了使代碼更加健壯並能相容以後的Android版本和新設備,安卓4,1後sdcard中會有系統自動生成的保存特定內容的的文件目錄,從而可以使用一些特定函數來獲取對應目錄。

今天我們就簡單介紹幾種訪問SDcard路徑的幾種方式:

本次演示獲取的圖片路徑如下:

完整路徑為“/storage/emulated/0/Download/tianxingjiuge.jpg”

下麵我們通過將本機“/storage/emulated/0/Download/tianxingjiuge.jpg”圖片載入到APP中ImageView的演示來介紹這幾種載入方式:

佈局文件上方為一個Button,下方為imagView,不做過多闡述了,java實現代碼如下:

 1 public class MainActivity extends AppCompatActivity {
 2     ImageView iv;
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7         iv= (ImageView) findViewById(R.id.iv);
 8     }
 9     public void load(View view){
10         //第一種:直接引用全部的目錄(4.1之前使用,之後不建議這樣用)
11 //        Bitmap bm = BitmapFactory.decodeFile("/storage/emulated/0/Download/tianxingjiuge.jpg");
12         //第二種:/storage/emulated/0這一段的路徑可以用Environment.getExternalStorageDirectory()
13 //        Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() +
14 //                "/Download/tianxingjiuge.jpg");
15         //第三種:使用Environment.getExternalStoragePublicDirectory(String type)函數調用不同類型的文件目錄
16         Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory
17                 (Environment.DIRECTORY_DOWNLOADS) + "/tianxingjiuge.jpg");
18         iv.setImageBitmap(bm);
19     }
20 }

第三種方式中使用Environment.getExternalStoragePublicDirectory(String type)函數,該函數可以返回特定類型的目錄,目前支持如下類型:

1 • DIRECTORY_ALARMS //警報鈴聲
2 • DIRECTORY_DCIM //相機拍攝的圖片和視頻
3 • DIRECTORY_DOWNLOADS //下載文件保存
4 • DIRECTORY_MOVIES //電影的保存,比如通過google play下載的電影
5 • DIRECTORY_MUSIC //音樂保存
6 • DIRECTORY_NOTIFICATIONS //通知音樂保存
7 • DIRECTORY_PICTURES //下載的圖片
8 • DIRECTORY_PODCASTS //用於保存podcast(博客)的音頻文件
9 • DIRECTORY_RINGTONES //保存鈴聲

本次圖片保存在Download目錄下,所以使用Environment.DIRECTORY_DOWNLOADS。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這幾天自己研究了關於地手機上面開發安卓地圖的問題,發現百度官方示例demo講解百度持續定位方面還是講解的有些不清楚,本人研究了幾次之後將其弄得更詳細以便於讓各位方便學習,有不足之處請在評論區指出,官方示例的網址是:http://lbsyun.baidu.com/index.php?title=and ...
  • 作者:Antonio Leiva 時間:Dec 27, 2016 原文鏈接:https://antonioleiva.com/custom-views-android-kotlin/ 在我們閱讀有關class文章時,你可能記得通常情況下僅用一個構造函數。這對於要創建定製視圖就是一個問題。 Andro ...
  • 一、到 百度地圖開發平臺下載SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1、點擊自定義下載 2、下載自己想要的功能包我這裡選了三個 3、獲取密鑰 獲取密鑰之前我們要新建一個應用 填寫好相關的信息 二 ...
  • iOS微信第三方登錄實現 一、接入微信第三方登錄準備工作。移動應用微信登錄是基於OAuth2.0協議標準構建的微信OAuth2.0授權登錄系統。在進行微信OAuth2.0授權登錄接入之前,在微信開放平臺註冊開發者帳號,並擁有一個已審核通過的移動應用,並獲得相應的AppID和AppSecret,申請微 ...
  • 由[OpenDigg](http://www.opendigg.com/) 出品的安卓開源項目周報第四期來啦。我們的安卓開源周報集合了OpenDigg一周來新收錄的優質的安卓開發方面的開源項目,方便安卓開發人員便捷的找到自己需要的項目工具等。 ...
  • 崩潰提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x14df0bd0> was mutated while being enumer ...
  • 參考文章網址: http://www.jianshu.com/p/7a2f49c654df 1.申請APPKey 2.在AppDelegate.m文件中的代碼示例 3.具體的方法實現 ...
  • SignalR 是一個開發實時 Web 應用的 .NET 類庫,使用 SignalR 可以很容易的構建基於 ASP.NET 的實時 Web 應用。SignalR 支持多種伺服器和客戶端,可以 Host 在 7.0 以上的 IIS 伺服器,或者通過 Owin Host 在桌面應用和 Windows 服 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...