Android擷取系統外置儲存卡路徑的方法

來源:互聯網
上載者:User

標籤:path   android外置sd   外置sd路徑   android開發   sd路徑   

android系統可通過Environment.getExternalStorageDirectory()擷取儲存卡的路徑,但是現在有很多手機內建有一個儲存空間,同時還支援外置sd卡插入,這樣通過Environment.getExternalStorageDirectory()方法擷取到的就是內建儲存卡的位置,需要擷取外置儲存卡的路徑就比較麻煩,這裡借鑒網上的代碼,稍作修改,在已有的手機上做了測試,效果還可以,當然也許還有其他的一些奇葩機型沒有覆蓋到。

package com.example.getpath;import java.io.BufferedReader;import java.io.File;import java.io.InputStream;import java.io.InputStreamReader;import android.annotation.SuppressLint;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.util.Log;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getPath2();}@SuppressLint("SdCardPath")public String getPath2() {String sdcard_path = null;String sd_default = Environment.getExternalStorageDirectory().getAbsolutePath();Log.d("text", sd_default);if (sd_default.endsWith("/")) {sd_default = sd_default.substring(0, sd_default.length() - 1);}// 得到路徑try {Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("mount");InputStream is = proc.getInputStream();InputStreamReader isr = new InputStreamReader(is);String line;BufferedReader br = new BufferedReader(isr);while ((line = br.readLine()) != null) {if (line.contains("secure"))continue;if (line.contains("asec"))continue;if (line.contains("fat") && line.contains("/mnt/")) {String columns[] = line.split(" ");if (columns != null && columns.length > 1) {if (sd_default.trim().equals(columns[1].trim())) {continue;}sdcard_path = columns[1];}} else if (line.contains("fuse") && line.contains("/mnt/")) {String columns[] = line.split(" ");if (columns != null && columns.length > 1) {if (sd_default.trim().equals(columns[1].trim())) {continue;}sdcard_path = columns[1];}}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.d("text", sdcard_path);return sdcard_path;}}



Android擷取系統外置儲存卡路徑的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.