Repository navigation
Expand file tree
/
Copy pathDeviceInfoPlugin.java
More file actions
70 lines (58 loc) · 2.28 KB
/
Copy pathDeviceInfoPlugin.java
File metadata and controls
70 lines (58 loc) · 2.28 KB
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 com.plugin.deviceinfo;
import com.java.myapplication.Plugin;
import com.java.myapplication.ShizukuProxy;
import java.util.Map;
/**
* 设备信息插件:演示 getProp + execCommand 组合使用。
*
* 打包必须走 build.sh(javac -> d8 -> jar),jar 内需为 classes.dex。
*/
public class DeviceInfoPlugin implements Plugin {
@Override
public String getName() {
return "DeviceInfoPlugin";
}
@Override
public String getDescription() {
return "设备信息:硬件、系统、屏幕、电池、存储、第三方应用数";
}
@Override
public String getVersion() {
return "1.0.0";
}
@Override
public boolean needsShizuku() {
return true;
}
@Override
public String execute(ShizukuProxy proxy, Map<String, ?> args) {
StringBuilder out = new StringBuilder();
out.append("设备\n");
out.append(" 品牌/型号: ")
.append(prop(proxy, "ro.product.brand")).append(" ")
.append(prop(proxy, "ro.product.model")).append("\n");
out.append(" 系统版本: Android ")
.append(prop(proxy, "ro.build.version.release"))
.append(" (SDK ").append(prop(proxy, "ro.build.version.sdk")).append(")\n");
out.append(" 构建指纹: ").append(prop(proxy, "ro.build.fingerprint")).append("\n");
out.append("\n屏幕\n").append(indent(proxy.execCommand("wm size")));
out.append("\n电池\n").append(
indent(proxy.execCommand("dumpsys battery | grep -E 'level|status|temperature|voltage'")));
out.append("\n存储\n").append(indent(proxy.execCommand("df -h /data | tail -1")));
out.append("\n第三方应用数\n").append(
indent(proxy.execCommand("pm list packages -3 | wc -l")));
return out.toString();
}
private static String prop(ShizukuProxy proxy, String key) {
String value = proxy.getProp(key);
return value == null ? "-" : value.trim();
}
private static String indent(String text) {
if (text == null) return " -\n";
StringBuilder builder = new StringBuilder();
for (String line : text.trim().split("\n")) {
builder.append(" ").append(line).append("\n");
}
return builder.toString();
}
}