问题
我想,当他可以启用或禁用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转发 –