Я разработал приложение для устройства Android 4.4, в котором я пытаюсь получить IP-адрес и адрес MA C, используя EthernetManager для проводной сети. Теперь, когда я пытаюсь запустить это приложение на устройстве Android 5.1.1, я не получаю IP-адрес и адрес MA C. Я уже предоставил доступ суперпользователя.
У меня проблемы с получением этой работы:
public string GetInterfaceName()=>(string)ethernetManager.Class.GetMethod("getEthernetIfaceName").Invoke(ethernetManager);
Журнал ошибок:
2020-02- 18 16: 20: 37.8485 [INFO] [4] HttpService - Попытка получить данные о проводном сетевом соединении через вызов GetWiredNetworkConfiguration. 2020-02-18 16: 20: 37.9114 [ОШИБКА] [4] HttpService - getEthernetIfaceName [] 2020-02-18 16: 20: 37.9114 [ИНФО] [4] HttpServer - Ответ на запрос / проводную сеть / конфигурацию: Java .Lang.NoSuchMethodException: getEthernetIfaceName [] в Java .Interop.JniEnvironment + InstanceMethods.CallObjectMethod (Java .Interop.JniObjectReference экземпляр, Java .Interop.Jniment0). ) [0x0006e] in: 0 в Java .Interop.JniPeerMembers + JniInstanceMethods.InvokeAbstractObjectMethod (закодированный элемент System.String, Java .Interop.IJavaPeerable self, Java .Interop.Jni01uegual: 0 0) [0] 0 0) в Java .Lang.Class.GetMethod (имя System.String, Java .Lang.Class [] parameterTypes) [0x00043] в: 0 в PatientPoint.Droid.NetworkConfiguration.Wired.EthernetManagerProxy.GetInterfaceName () [0x00015] в <3433561ce2794b26999a934f0ccf7c2a>: 0 в PatientPoint.Droid.NetworkConfiguration.Wired.WiredNetworkConnectionProvider.GetWiredNetworkConfiguration () [0x 00000] в <3433561ce2794b26999a934f0ccf7c2a>: 0 в Deadpool.Droid.Core.HttpService.GetWiredNetworkConfiguration () [0x00015] в <33f384394b3e44efac7c863885fc43f1>: 0 --- 10-го класса *. .lang.NoSuchMethodException: getEthernetIfaceName [] в java .lang.Class.getMethod (Class. java: 664) в java .lang.Class.getMethod (Class. java: 643)
Функция для получения МА C Адрес:
private string GetMacAddress(string interfaceName)
{
var ethernetInterface = NetworkInterface.GetByName(interfaceName);
if (ethernetInterface != null)
{
var bytes = ethernetInterface.GetHardwareAddress();
if (bytes != null)
{
var result = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
result.Append($"{bytes[i]:X2}");
if (i != bytes.Length - 1)
{
result.Append(":");
}
}
return result.ToString();
}
}
return "Not Available";
}
Пожалуйста, сообщите, работает ли вышеуказанный метод для Android 4.4 или мне нужно использовать какой-то другой метод для Android 5.1.1 или я здесь что-то не так делаю?