-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathApp.java
94 lines (86 loc) · 3.93 KB
/
App.java
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package com.android.js.api;
import android.app.Activity;
import android.os.Environment;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import org.json.JSONObject;
import org.json.JSONException;
import static android.os.Environment.DIRECTORY_ALARMS;
import static android.os.Environment.DIRECTORY_DCIM;
import static android.os.Environment.DIRECTORY_DOWNLOADS;
import static android.os.Environment.DIRECTORY_MOVIES;
import static android.os.Environment.DIRECTORY_MUSIC;
import static android.os.Environment.DIRECTORY_NOTIFICATIONS;
import static android.os.Environment.DIRECTORY_PICTURES;
import static android.os.Environment.DIRECTORY_PODCASTS;
import static android.os.Environment.DIRECTORY_RINGTONES;
public class App {
private Activity activity;
public App(Activity activity){
this.activity = activity;
}
public String getPath(String name) {
if (name.equals("root")) {
return Environment.getRootDirectory().getPath();
} else if (name.equals("data")) {
return Environment.getDataDirectory().getPath();
} else if (name.equals("cache")) {
return Environment.getDownloadCacheDirectory().getPath();
} else if (name.equals("storage")) {
return Environment.getExternalStorageDirectory().getPath();
} else if (name.equals("alarms")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_ALARMS).getPath();
} else if (name.equals("dcim")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM).getPath();
} else if (name.equals("downloads")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS).getPath();
} else if (name.equals("movies")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES).getPath();
} else if (name.equals("music")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC).getPath();
} else if (name.equals("notifications")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_NOTIFICATIONS).getPath();
} else if (name.equals("pictures")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES).getPath();
} else if (name.equals("podcasts")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_PODCASTS).getPath();
} else if (name.equals("ringtones")) {
return Environment.getExternalStoragePublicDirectory(DIRECTORY_RINGTONES).getPath();
} else if (name.equals("appData")) {
return this.activity.getFilesDir().getPath();
} else if (name.equals("userData")) {
return this.activity.getExternalFilesDir(null).getPath();
} else {
return "-1";
}
}
public String exec(String[] cmdarray) throws JSONException {
JSONObject result = new JSONObject();
try {
Process process = Runtime.getRuntime().exec(cmdarray, null,
new File(this.activity.getFilesDir().getPath()));
process.waitFor();
result.put("status", process.exitValue());
result.put("stdout", readStream(process.getInputStream()));
result.put("stderr", readStream(process.getErrorStream()));
} catch (Exception e) {
result.put("error", e.getMessage());
}
return result.toString();
}
private String readStream(InputStream stream) throws IOException {
BufferedReader reader = new BufferedReader(
new InputStreamReader(stream));
StringBuilder content = new StringBuilder();
int cnt = 0;
String s;
while((s = reader.readLine()) != null) {
content.append(s + "\n");
cnt++;
}
return cnt == 1 ? content.toString().trim() : content.toString();
}
}