在我的应用程序中,我想监视启用或禁用ADB over WiFi的时间。似乎没有BroadcastIntent,所以我不知道如何监控它的状态。
您会推荐一种方法吗?我遇到的唯一方法是每隔几秒钟轮询一次,然后通过shell查看adbd运行的位置。这看起来非常可怕,效率低下且非常糟糕。
答案 0 :(得分:0)
有一个属性可以确定adb可能正在侦听的端口:
adb shell getprop service.adb.tcp.port
但是显然没有办法通知android系统内的属性变化:http://rxwen.blogspot.fr/2010/01/android-property-system.html
您仍然需要轮询它以获得更改通知,但这可能更容易。尽管如此,设置此端口并不意味着adb正在通过wifi运行。虽然有机会。
答案 1 :(得分:0)
可以通过添加ContentOberserver
来监控设置来完成。默认情况下,ADB在端口5555
上运行,并且在未启用时通常设置为-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");
}
}
});