blob: 9d3663fc1c792698e46a9a4b4e90e3aa73501df5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/**
*
*/
package org.cyanogenmod.wallpapers.photophase;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* @author jruesga
*
*/
public final class StorageHelper {
private static final String TAG = "StorageHelper";
private static final String EXTERNAL_REGEXP = "(?i).*vold.*(fuse|vfat|ntfs|exfat|fat32|ext3|ext4).*rw.*";
/**
* Method that returns all the external mounts
*
* @return List<String> All the external mounts
*/
public static List<String> getExternalMounts() {
final List<String> out = new ArrayList<String>();
// Execute the mount command to list mounts
final StringBuilder sb = new StringBuilder();
try {
final Process process =
new ProcessBuilder().command("mount")
.redirectErrorStream(true).start();
process.waitFor();
final InputStream is = process.getInputStream();
byte[] buffer = new byte[1024];
int read = 0;
while ((read = is.read(buffer, 0, 1024)) != -1) {
sb.append(new String(buffer, 0, read));
}
is.close();
} catch (IOException ioex) {
Log.e(TAG, "Failed to list external mounts", ioex);
} catch (InterruptedException iex) {
Log.e(TAG, "Failed to list external mounts", iex);
}
// Parse the output
final String[] lines = sb.toString().split("\n");
for (String line : lines) {
if (!line.toLowerCase(Locale.US).contains("asec")) {
if (line.matches(EXTERNAL_REGEXP)) {
String[] parts = line.split(" ");
for (String part : parts) {
if (part.startsWith("/")) {
if (!part.toLowerCase(Locale.US).contains("vold")) {
out.add(part);
}
}
}
}
}
}
return out;
}
}
|