【问题标题】:Android HotSpot connected clientsAndroid HotSpot 连接的客户端
【发布时间】:2016-04-21 15:29:27
【问题描述】:

当任何对等方或客户端连接到android热点时,android中是否有任何广播。

就像我创建了热点并想等到任何对等方或客户端连接到它。那么,我将如何了解任何已连接的对等方。

【问题讨论】:

    标签: android


    【解决方案1】:

    1) 你可以使用 BroadcastReciever:

    android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED

    检测客户端连接。 添加您的 AndroidManifest:

    <receiver
        android:name=".WiFiConnectionReciever"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED" />
        </intent-filter>
    </receiver>
    

    在你的活动中:

    IntentFilter mIntentFilter = new IntentFilter();
      mIntentFilter.addAction("android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED");
                        rcv = new WiFiConnectionReciever();
                        registerReceiver(rcv, mIntentFilter);
    

    2) 或者,您可以扫描已连接设备的列表,并在有变化时不时进行比较。

    public void getClientList() {
     int macCount = 0;
     BufferedReader br = null;
     try {
         br = new BufferedReader(new FileReader("/proc/net/arp"));
         String line;
         while ((line = br.readLine()) != null) {
             String[] splitted = line.split(" +");
             if (splitted != null ) {
                 // Basic sanity check
                 String mac = splitted[3];
                 System.out.println("Mac : Outside If "+ mac );
                 if (mac.matches("..:..:..:..:..:..")) {
                     macCount++;
                    /* ClientList.add("Client(" + macCount + ")");
                     IpAddr.add(splitted[0]);
                     HWAddr.add(splitted[3]);
                     Device.add(splitted[5]);*/
                     System.out.println("Mac : "+ mac + " IP Address : "+splitted[0] );
                     System.out.println("Mac_Count  " + macCount + " MAC_ADDRESS  "+ mac);
                 Toast.makeText(
                         getApplicationContext(),
                         "Mac_Count  " + macCount + "   MAC_ADDRESS  "
                                 + mac, Toast.LENGTH_SHORT).show();
    
                 }
                /* for (int i = 0; i < splitted.length; i++)
                     System.out.println("Address "+ splitted[i]);*/
    
             }
         }
     } catch(Exception e) {
    
     }               
    }
    

    【讨论】:

    • 这个广播不起作用(android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED),我已经在使用使用 timertask 的第二种方法,但我看起来像这个广播(android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED),但它不工作
    • 您是否请求权限:ACCESS_WIFI_STATE、CHANGE_WIFI_STATE、CHANGE_WIFI_MULTICAST_STATE?
    • 是的,我已经使用了所有三个权限,并且正在使用 Android M 6.0 进行测试。但没有奏效。
    • 问题是在android M上这个广播不再存在
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2015-08-22
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多