問題
我想,當他可以啓用或禁用Android設備比Android奇巧更高的束縛功能來通知用戶。檢查網絡共享USB /藍牙激活
儘管通過反射訪問WIFI Tethering隱藏的API,但我無法找到類似的方式告訴我是否啓用通過USB/Bluetooth進行綁定。
對於USB圈養
到目前爲止,我改變了我的接收器清單聲明是這樣的:
<receiver android:name=".features.tethering.TetheringReceiver">
<intent-filter>
<action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED"/>
<action android:name="android.intent.action.ums_connected" />
<action android:name="android.net.conn.TETHER_STATE_CHANGED" />
</intent-filter>
</receiver>
有了這個,我可以收到的確有些動作時,USB繫繩禁用/啓用,但它不發送當前狀態,這意味着我收到此操作,但如果處於活動狀態則不會收到,我只收到3個數組(ConnectivityManager.EXTRA_AVAILABLE_TETHER,ConnectivityManager.EXTRA_ACTIVE_TETHER和ConnectivityManager.EXTRA_ERRORED_TETHER)。
我在檢查ConnectivityManager的源代碼,並且發現了一個叫做繫繩的方法,雖然我需要WRITE_SETTINGS權限。 有沒有其他的方式來檢查沒有寫設置權限的USB綁定狀態?
對於藍牙網絡
對於藍牙是有點不同,到目前爲止,我無法接收任何廣播或找到一種方式來獲得網絡共享藍牙的當前狀態。
我改變接收到這樣的事情,但我無法得到任何東西:
<receiver android:name=".features.tethering.TetheringReceiver">
<intent-filter>
<action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
<action android:name="android.intent.action.ums_connected" />
<action android:name="android.net.conn.TETHER_STATE_CHANGED" />
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>
</receiver>
此外,我有以下權限聲明:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
摘要
我正在尋找一種方法來了解當前USB和藍牙無線網絡的狀態,而無需任何危險的權限。有沒有辦法做到這一點?
我也在here上應用此解決方案,但沒有成功。
它適用於USB綁定,謝謝! 雖然,你有藍牙網絡共享的解決方案嗎? – iGoDa
與藍牙網絡連接技術上* PPP over Bluetooth *並在Android中使用藍牙PAN配置文件。在http://stackoverflow.com/questions/22864670/enable-bluetooth-tethering-android-programmatically就像一個解決方案。 Android中的所有綁定都是IP地址的簡單轉發。這就是爲什麼如果在任何接口(USB,藍牙......)上啓用共享功能時,命令「cat/proc/sys/net/ipv4/ip_forward」的輸出是一個明確的指示符,如果是0,則不建立共享連接 –
藍牙的問題在於,啓用共享功能時等待連接,只要沒有PAN連接(沒有配對設備),就不會設置IP轉發 –