1
當任何對等或客戶端連接到android熱點時,android中是否有任何廣播。Android HotSpot連接的客戶端
就像我已經創建了熱點,並希望等到任何對等或客戶端連接到它。那麼,我將如何知道任何對等點已連接。
當任何對等或客戶端連接到android熱點時,android中是否有任何廣播。Android HotSpot連接的客戶端
就像我已經創建了熱點,並希望等到任何對等或客戶端連接到它。那麼,我將如何知道任何對等點已連接。
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? – Fiil
是的,我已經使用了所有三種權限,並且正在使用Android M 6.0進行測試。但沒有奏效。 –