在我的应用程序中,我想监控 ADB over WiFi 何时启用或禁用。似乎没有广播意图,所以我不知道如何监控它的状态。
你会推荐一种方法吗?我遇到的唯一方法是每隔几秒钟轮询一次,并通过 shell 检查 adbd 是否在哪里运行。这似乎是可怕的、可怕的低效和笨拙的。
有一个属性可以确定 adb 可能正在侦听的端口:
adb shell getprop service.adb.tcp.port
但显然没有办法通知android系统内的属性更改:http ://rxwen.blogspot.fr/2010/01/android-property-system.html
您仍然需要对其进行轮询以获得更改通知,但这可能更容易。尽管如此,设置此端口并不意味着 adb 正在通过 wifi 运行。不过也有机会。
可以通过添加一个ContentOberserver
监控设置来完成。ADB5555
默认在端口上运行,通常设置-1
为未启用时。
getApplicationContext().getContentResolver().registerContentObserver(
Settings.Secure.getUriFor("adb_port"), false,
new ContentObserver() {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Integer intPort = Settings.Secure.getInt(getContentResolver(), "adb_port", -1);
if (intPort > -1) {
System.out.println("Enabled");
} else {
System.out.println("Disabled");
}
}
});