Мне было интересно, может ли кто-нибудь пролить свет на вопрос о поле имени WifiP2pDevice.Android, называя устройство P2P
Как вы уже знаете, WifiP2pDevice имеет поле devicename, но не имеет методов «установить» devicename, только чтобы прочитать его.
Как обсуждалось в этом посте: How change the device name in WiFi direct p2p?
Это может быть возможным, чтобы установить имя устройства с помощью отражения. Я знаю, что это плохой обычай, но поскольку API не поддерживает это, и мне нужна эта функциональность в моем приложении, как бы я это сделал?
В настоящее время, мой код:
try
{
method = myManager.getClass().getMethod("setDeviceName", new Class[] { WifiP2pManager.Channel.class, String.class,
WifiP2pManager.ActionListener.class });
method.invoke(myManager, myChannel, getIntent().getStringExtra(NETWORK_NAME));
Toast.makeText(this, "Name set successful", Toast.LENGTH_SHORT).show();
}
В настоящее время приложение получает к этой точке и возвращает NoSuchMethodException, подразумевая, что setDeviceName не существует. Любая помощь/альтернативы отражения java?
EDIT 1: Согласно предложению, я изменил свой код, чтобы использовать WifiP2pManager вместо WifiP2pDevice для вызова getClass(), однако, программа вылетает из строки метода method.invoke, что метод setDeviceName ожидает 3 аргумента, но только получил 2 (хотя код режима, как он сейчас стоит, отправляет 3).
Я тоже не мог выполнить эту работу, но я все еще настраиваю синтаксис, чтобы узнать, не сделал ли я прогресса в этом прозрении. – user1519665