मैंने अपने सैमसंग गैलेक्सी टैब S2 (मॉडल: T819Y) पर दिमित्री लोज़ेंको और ग्नथोनिक द्वारा प्रदान किए गए समाधानों की कोशिश की है, लेकिन किसी ने भी मुझे एक बाहरी एसडी कार्ड निर्देशिका के लिए रास्ता निकालने में मदद नहीं की। कमांड निष्पादन में बाहरी एसडी कार्ड निर्देशिका (यानी / संग्रहण / A5F9-15F4) के लिए आवश्यक पथ शामिल था, लेकिन यह नियमित अभिव्यक्ति से मेल नहीं खाता था इसलिए इसे वापस नहीं किया गया था। मैं सैमसंग के बाद निर्देशिका नामकरण तंत्र नहीं मिलता है। क्यों वे मानकों (यानी extsdcard) से विचलित होते हैं और मेरे मामले में वास्तव में कुछ गड़बड़ करते हैं (जैसे / भंडारण / A5F9-15F4) । क्या मुझसे कुछ छूट रहा है? वैसे भी, Gnathonic की नियमित अभिव्यक्ति में परिवर्तन के बादmount
समाधान से मुझे वैध एसडीकार्ड निर्देशिका प्राप्त करने में मदद मिली:
final HashSet<String> out = new HashSet<String>();
String reg = "(?i).*(vold|media_rw).*(sdcard|vfat|ntfs|exfat|fat32|ext3|ext4).*rw.*";
String s = "";
try {
final Process process = new ProcessBuilder().command("mount")
.redirectErrorStream(true).start();
process.waitFor();
final InputStream is = process.getInputStream();
final byte[] buffer = new byte[1024];
while (is.read(buffer) != -1) {
s = s + new String(buffer);
}
is.close();
} catch (final Exception e) {
e.printStackTrace();
}
// parse output
final String[] lines = s.split("\n");
for (String line : lines) {
if (!line.toLowerCase(Locale.US).contains("asec")) {
if (line.matches(reg)) {
String[] parts = line.split(" ");
for (String part : parts) {
if (part.startsWith("/"))
if (!part.toLowerCase(Locale.US).contains("vold"))
out.add(part);
}
}
}
}
return out;
मुझे यकीन नहीं है कि यह एक वैध समाधान है और यदि यह अन्य सैमसंग टैबलेट के लिए परिणाम देगा, लेकिन इसने अभी के लिए मेरी समस्या को ठीक कर दिया है। एंड्रॉइड (v6.0) में हटाने योग्य एसडी कार्ड पथ को पुनः प्राप्त करने के लिए एक और तरीका निम्नलिखित है। मैंने Android मार्शमॉलो के साथ विधि का परीक्षण किया है और यह काम करता है। इसमें प्रयुक्त दृष्टिकोण बहुत बुनियादी है और निश्चित रूप से अन्य संस्करणों के लिए भी काम करेगा लेकिन परीक्षण अनिवार्य है। इसमें कुछ अंतर्दृष्टि उपयोगी होगी:
public static String getSDCardDirPathForAndroidMarshmallow() {
File rootDir = null;
try {
// Getting external storage directory file
File innerDir = Environment.getExternalStorageDirectory();
// Temporarily saving retrieved external storage directory as root
// directory
rootDir = innerDir;
// Splitting path for external storage directory to get its root
// directory
String externalStorageDirPath = innerDir.getAbsolutePath();
if (externalStorageDirPath != null
&& externalStorageDirPath.length() > 1
&& externalStorageDirPath.startsWith("/")) {
externalStorageDirPath = externalStorageDirPath.substring(1,
externalStorageDirPath.length());
}
if (externalStorageDirPath != null
&& externalStorageDirPath.endsWith("/")) {
externalStorageDirPath = externalStorageDirPath.substring(0,
externalStorageDirPath.length() - 1);
}
String[] pathElements = externalStorageDirPath.split("/");
for (int i = 0; i < pathElements.length - 1; i++) {
rootDir = rootDir.getParentFile();
}
File[] files = rootDir.listFiles();
for (File file : files) {
if (file.exists() && file.compareTo(innerDir) != 0) {
// Try-catch is implemented to prevent from any IO exception
try {
if (Environment.isExternalStorageRemovable(file)) {
return file.getAbsolutePath();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
कृपया साझा करें यदि आपके पास इस मुद्दे को संभालने के लिए कोई अन्य दृष्टिकोण है। धन्यवाद