我正在做一些测试项目,基本上我想在我处于热点模式时将所有流量路由到固定地址.我有IP范围,例如192.168.0.0/24我不知道我是否可以使用没有root或JNI函数的iptables (找不到任何符合我想要的东西)开箱即用的思维非常受欢迎(DNS,客户端连接等低级别数据包广播......)
任何的想法?
编辑:Android和iOS如何检测网络门户?
来源:https://sudoroom.org/wiki/Mesh/Firmware/Splash_page 他们尝试HTTP GET on
iOS:http://www.apple.com/library/test/success.html并期望有200个门户网站
Android:http://clients3.google.com/generate_204并期望在不在门户网站后面的204状态,任何其他状态是门户网站
那么,我该如何正确回应这些检测?
我最近更新到 Android Bumblebee。我正在尝试通过 wifi 无线连接我的设备。但我总是收到如下屏幕截图所示的消息。
我已经更新到最新的平台工具 SDK 32,但问题仍然存在。任何帮助,将不胜感激。
android android-wifi android-studio pairing android-studio-bumblebee
我试图以编程方式添加一个wifi网络并连接到该网络.
如果wi-fi已经打开,我的代码工作正常.
如果wi-fi关闭,我看到wifimanager.addtonetwork()失败,当我看到手机的wifi设置时,我可以看到状态为扫描
如果我尝试再次连接它工作正常.
请参阅下面的代码.请帮忙
private int changeNetwork(NetworkSetting setting) {
// If the SSID is empty, throw an error and return
if (setting.getSsid() == null || setting.getSsid().length() == 0) {
return doError(R.string.wifi_ssid_missing);
}
// If the network type is invalid
if (setting.getNetworkType() == NetworkType.NETWORK_INVALID) {
return doError(R.string.wifi_type_incorrect);
}
// If the password is empty, this is an unencrypted network
if (setting.getPassword() == null
|| setting.getPassword().length() == 0
|| setting.getNetworkType() == null
|| setting.getNetworkType() == NetworkType.NETWORK_NOPASS) {
return changeNetworkUnEncrypted(setting);
}
if …Run Code Online (Sandbox Code Playgroud) 我想访问以获取此参数
com.android.internal.R.bool.config_wifi_background_scan_support 但它给出了com.android.internal.R无法解决的错误?
我正试图用这种方式: this.getResources().getSystem().getIdentifier("config_wifi_background_scan_support","id", "android")
但我一无所获.
任何人都知道如何获取信息com.android.internal.R.bool?
我需要在托管热点时找到设备的IP地址.到目前为止我使用过这段代码:
//if is using Hotspot
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
if (intf.getName().contains("wlan")) {
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && (inetAddress.getAddress().length == 4)) {
return inetAddress.getHostAddress();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好但是NetworkInterface某些设备上的wifi 名称不同.所以我必须首先找到设备的wifi NetworkInterface名称(针对其热点).我怎么能找到这个名字?或者是否有更好的方法来查找设备的IP地址?
///通过MAC查找正确的IP地址似乎也不起作用
我的设备与wifi连接,但如果连接wifi如何,但这些没有互联网连接
以下是我的代码,我试图检查是否没有互联网连接
public static boolean isConnectedWifi(Context context) {
NetworkInfo info=null;
if(context!=null){
info= IsNetConnectionAvailable.getNetworkInfo(context);
}
return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI);
}
Run Code Online (Sandbox Code Playgroud)
当没有互联网访问时,它总是返回true
我正在开发一个需要扫描公共Wi-Fi接入点的项目.
目前,我正在过滤ScanResult这样的:
for (ScanResult scanResult : wifiList) {
if (!(scanResult.capabilities.contains("WEP") ||
scanResult.capabilities.contains("WPA") ||
scanResult.capabilities.contains("WPA2"))) {
openWifiList.add(scanResult);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我也得到附近的打印机.
扫描时,手机未连接到任何网络.
我原以为我得到的列表与Android上的Wi-Fi设置中显示的Wi-Fi连接列表完全相同.但在Wi-Fi设置中,没有显示任何打印机.
因此1)我认为打印机出现在ScanResult列表中是很奇怪的,打印机是否真的可见?
更新:并非所有的Wi-Fi打印机都可见,我得到了一些提示,看起来就像打印机一样,具有特殊功能,例如HP打印机支持 HP Wireless Direct功能(参见例如 https:/ /h30434.www3.hp.com/t5/Inkjet-Printing/Printer-SSID-appearing-on-my-wi-fi-list/td-p/1705073和 https://support.hp.com/rs-en/document/c04577030).
2)有什么方法可以检查是否ScanResult属于打印机?
到目前为止,我只能想到过滤常见的SSID名称,但这不会非常有效或可靠.
谢谢你的任何建议.
WiFi感知和WiFi P2P技术之间的主要区别是什么?
使用 WiFi P2P,您可以在不需要公共网络的情况下在两个或多个附近设备之间建立连接。但 android 文档规范也说明
Wi-Fi 感知功能使运行 Android 8.0(API 级别 26)及更高版本的设备能够发现并直接相互连接,而无需它们之间的任何其他类型的连接。
它们之间有什么区别?
我正在尝试使用 Android Q 上的 WifiNetworkSpecifier 连接到 WiFi。我遇到的问题是 Android 始终使用最后一个有效凭据连接到 AP,即使在我手动向 WifiNetworkSpecifier 提供新的更新凭据之后也是如此。
这是流程:
如果我颠倒逻辑,同样的事情会发生:
关键是,一旦它使用有效凭据连接到 SSID,无论我放入 WifiNetworkSpecifier 的任何内容似乎都没有任何区别,它只是一遍又一遍地使用最后一个有效凭据。
这发生在 Google Pixel 2 和华为 P30 Lite 上。但是,在三星 Galaxy S9 上一切正常(如果我更新 WiFi 网络密码并为应用程序提供新的有效密码,应用程序将连接到 WiFi 网络;如果我提供它,它将无法连接到 WiFi假密码,假设我们之前成功连接到 WiFi)。
重启设备后,Pixel 和华为的问题得到“解决”,但是当我再次连接到 WiFi 时(输入有效凭据),我们又回到了同样的问题。
我不确定我是否在这里遗漏了一些微不足道的东西,但任何帮助将不胜感激!谢谢!
编辑:事实证明,您不必输入有效凭据即可触发此循环。例如,如果您第一次尝试使用虚假密码连接AP,并且在尝试使用正确密码连接后,系统会使用此错误密码(第一次输入的密码)进行连接。同样,这种情况发生在 Pixel 2 和华为 P30 Lite 上,但在 Galaxy S9 和 S9+ 上运行良好。重新启动手机仍会清除此“状态”。
这是代码:
@RequiresApi(api = Build.VERSION_CODES.Q)
private fun connectToWiFiOnQ(context: Context, wifiCredentials: WifiCredentials) {
val connectivityManager: ConnectivityManager =
context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val …Run Code Online (Sandbox Code Playgroud) android android-networking android-wifi android-connectivitymanager android-10.0
android ×10
android-wifi ×10
wifi ×2
android-10.0 ×1
android-connectivitymanager ×1
dns ×1
ip-address ×1
pairing ×1
proxy ×1
tethering ×1
wifi-direct ×1
wifimanager ×1
wifip2p ×1