a.新建一个名为setup.conf的文件
写入以下内容:B79A939390%20,这个字符串就是hello
从 frameworks/base/services/java/com/android/server/wm/WindowManagerService.java
文件的createWatermarkInTransaction()
方法中就可以看到是从/system/etc/setup.conf
文件中读取去字符串,然后再构造Watermark对象
void createWatermarkInTransaction() {
if (mWatermark != null) {
return;
}
File file = new File("/system/etc/setup.conf");
FileInputStream in = null;
DataInputStream ind = null;
try {
in = new FileInputStream(file);
ind = new DataInputStream(in);
String line = ind.readLine();
if (line != null) {
String[] toks = line.split("%");
if (toks != null && toks.length > 0) {
// TODO(multi-display): Show watermarks on secondary displays.
final DisplayContent displayContent = getDefaultDisplayContentLocked();
mWatermark = new Watermark(displayContent, displayContent.mRealDisplayMetrics,
toks);
}
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
} finally {
if (ind != null) {
try {
ind.close();
} catch (IOException e) {
}
} else if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
}
然后把setup.conf 文件push到 /system/etc/ 目录下重启即可
adb push setup.conf /system/etc/
B79A939390%20 这串代码的含义
B7 : H = (0xFF - 0xB7) = 0x48 = H (Ascii 码)
9A : e = (0xFF - 0x9A) = 0x65 = e (Ascii 码)
93 : l
93 : l
90 : o
20=字体大小
b.或者在a的基础上强制修改Watermark.java以加水印字串"hello world,this is my mark"为例,
frameworks/base/services/core/java/com/android/server/wm/Watermark.java
注释掉WaterMark构造函数中的这一句:
mText = builder.toString();
加上这一句:
mText = "hello world,this is my mark";
重新编译+push services+reboot手机即可,效果如下