是否可以通过代码直接更改WiFi的设备名称?我试过:如何更改WiFi直接p2p中的设备名称?
private WifiP2pDevice wDevice;
wDevice.deviceName = "newName";
但是,显然这是行不通的。 有什么想法?
是否可以通过代码直接更改WiFi的设备名称?我试过:如何更改WiFi直接p2p中的设备名称?
private WifiP2pDevice wDevice;
wDevice.deviceName = "newName";
但是,显然这是行不通的。 有什么想法?
下面的Java代码使用反射API,这是不太preferrable由于缺乏效率的,但是Android不提供另一种方式的话,你可以用它与魅力:
try {
Method m = wpm.getClass().getMethod(
"setDeviceName",
new Class[] { WifiP2pManager.Channel.class, String.class,
WifiP2pManager.ActionListener.class });
m.invoke(WifiP2pManager wifimngr,WifiP2pManager.Channel wifichannel, new_name, new WifiP2pManager.ActionListener() {
public void onSuccess() {
//Code for Success in changing name
}
public void onFailure(int reason) {
//Code to be done while name change Fails
}
});
} catch (Exception e) {
e.printStackTrace();
}
此代码对我的作品。
WifiP2pManager manager;
WifiP2pManager.Channel channel;
try {
manager = (WifiP2pManager)getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), new WifiP2pManager.ChannelListener() {
@Override
public void onChannelDisconnected() {
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
}
});
Class[] paramTypes = new Class[3];
paramTypes[0] = WifiP2pManager.Channel.class;
paramTypes[1] = String.class;
paramTypes[2] = WifiP2pManager.ActionListener.class;
Method setDeviceName = manager.getClass().getMethod(
"setDeviceName", paramTypes);
setDeviceName.setAccessible(true);
Object arglist[] = new Object[3];
arglist[0] = channel;
arglist[1] = devName;
arglist[2] = new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d("setDeviceName succeeded", "true");
}
@Override
public void onFailure(int reason) {
Log.d("setDeviceName failed", "true");
}
};
setDeviceName.invoke(manager, arglist);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
今天在Android 6.0.1上测试它 - 效果很好。谢谢。 –
它的工作原理,是否有任何安全风险?那么与WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION进行意图广播呢? – user3290180
你可能会详细说明并解释为什么这段代码会被删除,以及它做了什么?谢谢 – yochannah