今天有个需求,需要在快捷面板上面的蓝牙和Wifi上面显示已连接的蓝牙和Wifi的名字。
从网上找了一些资料,发现并没有说明到底怎么处理,我这边研究了下,目前,Wifi是可以正常显示的,但是,蓝牙的,需要使用到隐藏API,当然,这个对于我处理的系统应用是没有问题的,但是三方应用呢?貌似是不可以的。
现在总结下,后续找到更好的方案了,再来处理。以下内容基于Android 7.1.
Wifi名字的显示
Wifi开关的时候,会发送如下广播
WifiManager.WIFI_STATE_CHANGED_ACTION
看下API里面的说明
import android.net.wifi.WifiManager;
* Broadcast intent action indicating that Wi-Fi has been enabled, disabled,
* enabling, disabling, or unknown. One extra provides this state as an int.
* Another extra provides the previous state, if available.
*
* @see #EXTRA_WIFI_STATE
* @see #EXTRA_PREVIOUS_WIFI_STATE
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String WIFI_STATE_CHANGED_ACTION =
"android.net.wifi.WIFI_STATE_CHANGED";
从API上面的说明可以看出,此广播是在Wifi的状态enabled(已打开)、disabled(已关闭)、enabling(正在打开)、disabling(正在关闭)、unknow(未知)之间发送变化的时候发送,发送的时候会附带两个信息–EXTRA_WIFI_STATE和EXTRA_PREVIOUS_WIFI_STATE
- EXTRA_WIFI_STATE–发生变化后的状态
* The lookup key for an int that indicates whether Wi-Fi is enabled,
* disabled, enabling, disabling, or unknown. Retrieve it with
* {
@link android.content.Intent#getIntExtra(String,int)}.
*
* @see #WIFI_STATE_DISABLED
* @see #WIFI_STATE_DISABLING
* @see #WIFI_STATE_ENABLED
* @see #WIFI_STATE_ENABLING
* @see #WIFI_STATE_UNKNOWN
public static final String EXTRA_WIFI_STATE = "wifi_state";
- EXTRA_PREVIOUS_WIFI_STATE–变化之前的状态
* The previous Wi-Fi state.
*
* @see #EXTRA_WIFI_STATE
public static final String EXTRA_PREVIOUS_WIFI_STATE = "previous_wifi_state";
所以,我们监听了这个广播消息,就可以获取当前Wifi的一些状态信息。
具体使用如下:
- 注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mContext.registerReceiver(mReceiver, filter