我想知道在Android (API 26及更高版本)中是否有任何方法可以获得will热点状态(打开或关闭)而不使用反射,因为根据新的对非sdk接口的限制,它不会在Android P上工作。
我已经看到,有些方法提供了使用反射禁用WiFi热点的能力,但我希望避免这些方法,只想知道是否启用了热点。
提前感谢!
发布于 2018-07-30 09:06:41
请看下面的代码。这会帮你的
public class WifiApManager {
private final WifiManager mWifiManager;
public WifiApManager(Context context) {
mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
}
/*the following method is for getting the wifi hotspot state*/
public WIFI_AP_STATE getWifiApState() {
try {
Method method = mWifiManager.getClass().getMethod("getWifiApState");
int tmp = ((Integer) method.invoke(mWifiManager));
// Fix for Android 4
if (tmp > 10) {
tmp = tmp - 10;
}
return WIFI_AP_STATE.class.getEnumConstants()[tmp];
} catch (Exception e) {
Log.e(this.getClass().toString(), "", e);
return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;
}
}
/**
* Return whether Wi-Fi Hotspot is enabled or disabled.
*
* @return {@code true} if Wi-Fi AP is enabled
* @see #getWifiApState()
*/
public boolean isWifiApEnabled() {
return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;
}
}其中WIFI_AP_STATE是一个枚举,如下所示
public enum WIFI_AP_STATE {
WIFI_AP_STATE_DISABLING,
WIFI_AP_STATE_DISABLED,
WIFI_AP_STATE_ENABLING,
WIFI_AP_STATE_ENABLED,
WIFI_AP_STATE_FAILED
}https://stackoverflow.com/questions/51589794
复制相似问题