-2

このコードを使用して MAC アドレスを取得し、アプリに表示しています。このコードは、ほとんどの最新のデバイスと ANDROID BOX を除くすべてのデバイスで正常に機能します。

ANDROID BOX などの最新のデバイスでは null と表示されます。

コードは次のとおりです。

   public static String getWifiMacAddress() {
    try {
        String interfaceName = "wlan0";
        List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface intf : interfaces) {
            if (!intf.getName().equalsIgnoreCase(interfaceName)){
                continue;
            }

            byte[] mac = intf.getHardwareAddress();
            if (mac==null){
                return "";
            }

            StringBuilder buf = new StringBuilder();
            for (byte aMac : mac) {
                buf.append(String.format("%02X:", aMac));
            }
            if (buf.length()>0) {
                buf.deleteCharAt(buf.length() - 1);
            }
            return buf.toString();
        }
    } catch (Exception ex) { } // for now eat exceptions
    return "";
}

これらのアクセス許可をマニフェスト ファイルに記述しました

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
4

3 に答える 3

-1

6.0以降と同様に、マニフェストだけで許可を追加しても機能しません。実行時のアクセス許可が必要であり、許可されていない場合は許可する必要があります。

このリンクを確認してください:

https://stackoverflow.com/a/30549756/3910281

于 2017-01-27T12:46:49.323 に答える