Я обнаруживаю устройство в частной сети без доступа в Интернет. Единственными устройствами в сети являются устройство, которое я обнаруживаю, и мобильные устройства или ПК, на которых установлено приложение, над которым я сейчас работаю. Эти слова просто прекрасны на Android 5.1.1, но на 7 я не получаю ответа, как будто ничего не нахожу. Вот код, который я использую для обнаружения устройства. Я использую тип _telnet._tcp.
, а подключаемый модуль Cordova, который я использую здесь, — cordova-plugin-zeroconf< /а>
find(type) {// javascript
return new Promise((resolve, reject) => {
cordova.plugins.zeroconf.watch(type, "local.", (result) => {
var action = result.action;
var service = result.service;
if (action == 'added') {
console.debug('service added', service);
}
else if (action == 'resolved') {
console.debug('service resolved', service);
resolve({ status: "resolved", service: service });
}
else {
console.debug('service removed', service);
resolve({ status: "removed", service: service });
}
}, (error) => {
reject(error);
});
});
}
Первоначально я думал, что это может быть из-за разрешений, поэтому я добавил это в MainActivity
в проекте Android Cordova. И я вижу, что он регистрирует «имеет разрешение».
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//java
Log.d(TAG, "version 23 or more");
if (checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.CHANGE_WIFI_MULTICAST_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "has permission");
}
else {
Log.d(TAG, "no permission");
requestPermissions(new String[] { Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_MULTICAST_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
}