The*_*eme 7 android android-wifi
当Android设备连接到wifi AP时,它会使用以下名称标识自己:
android_cc1dec12345e6054
如何从Android应用程序中获取该字符串?不是为了改变它,只是为了读出.
编辑:
这是我的路由器的Web界面的屏幕截图,显示了所有连接设备的列表.请注意列表中的两个Android设备 - 如何从设备上运行的Java代码中读取该字符串?

kco*_*ock 12
建立@ Merlevede的答案,这是获得房产的快捷方式.它是一个私有API,所以它可能会发生变化,但至少从Android 1.5开始,这段代码还没有被修改过,所以它可能是安全的.
import android.os.Build;
import java.lang.reflect.Method;
/**
* Retrieves the net.hostname system property
* @param defValue the value to be returned if the hostname could
* not be resolved
*/
public static String getHostName(String defValue) {
try {
Method getString = Build.class.getDeclaredMethod("getString", String.class);
getString.setAccessible(true);
return getString.invoke(null, "net.hostname").toString();
} catch (Exception ex) {
return defValue;
}
}
Run Code Online (Sandbox Code Playgroud)
使用NetworkInterface对象枚举接口并从接口获取规范主机名InetAddress.由于您需要wifi名称,因此您可以wlan0直接查询快捷方式,如果失败,您可以将它们全部枚举为:
import android.test.InstrumentationTestCase;
import android.util.Log;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
public class NetworkInterfaceTest extends InstrumentationTestCase {
private static final String TAG = NetworkInterfaceTest.class.getSimpleName();
public void testNetworkName() throws Exception {
Enumeration<NetworkInterface> it_ni = NetworkInterface.getNetworkInterfaces();
while (it_ni.hasMoreElements()) {
NetworkInterface ni = it_ni.nextElement();
Enumeration<InetAddress> it_ia = ni.getInetAddresses();
if (it_ia.hasMoreElements()) {
Log.i(TAG, "++ NI: " + ni.getDisplayName());
while (it_ia.hasMoreElements()) {
InetAddress ia = it_ia.nextElement();
Log.i(TAG, "-- IA: " + ia.getCanonicalHostName());
Log.i(TAG, "-- host: " + ia.getHostAddress());
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会给你一个像这样的输出:
TestRunner? started: testNetworkName
++ NI: lo
-- IA: ::1%1
-- host: ::1%1
-- IA: localhost
-- host: 127.0.0.1
++ NI: p2p0
-- IA: fe80::1234:1234:1234:1234%p2p0
-- host: fe80::1234:1234:1234:1234%p2p0
++ NI: wlan0
-- IA: fe80::1234:1234:1234:1234%wlan0
-- host: fe80::1234:1234:1234:1234%wlan0
-- IA: android-1234567812345678 <--- right here
-- host: 192.168.1.234
Run Code Online (Sandbox Code Playgroud)
提示:如果InetAddress.getCanonicalHostName().equals(InetAddress.getHostAddress())您可以忽略它,因为它不是"真实"的名称.
我不知道这是否有帮助,但我在这里.
从unix shell(您可以在Google Play中下载任何终端应用)中,您可以通过键入来获取主机名
getprop net.hostname
Run Code Online (Sandbox Code Playgroud)
当然这不是你想要的......但另一方面,这里有关于如何从java执行unix命令的信息.也许通过结合这两个你得到你想要的东西.
| 归档时间: |
|
| 查看次数: |
15085 次 |
| 最近记录: |