我想设计一个应用程序,显示可用的Wi-Fi网络列表,并连接到用户选择的任何网络.
我已经实现了显示扫描结果的部分.现在,我想从扫描结果列表连接到用户选择的特定网络.
我该怎么做呢?
除非他们连接了Wi-Fi,否则我不希望我的用户甚至尝试下载某些内容.但是,我似乎只能判断是否启用了Wi-Fi,但他们仍然可以拥有3G连接.
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
然而,国家不是我所期望的.即使连接了Wi-Fi,我也会OBTAINING_IPADDR成为状态.
我正在开发一个用于检查互联网连接的Android广播接收器.
问题是我的广播接收器被调用了两次.我希望它只在网络可用时才被调用.如果它不可用,我不希望得到通知.
这是广播接收器
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
// Do something
Log.d("Network Available ", "Flag No 1");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcastreceiverforinternetconnection"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" …Run Code Online (Sandbox Code Playgroud) java android broadcastreceiver android-networking android-wifi
我需要检测何时通过WIFI进行网络连接.发送什么广播以确定已建立有效的网络连接.我需要验证HTTP的有效网络连接是否存在.我应该注意什么以及我需要做些什么其他测试才能知道存在有效连接.
如何以编程方式WEP/EAP WiFi configurations在Android中创建和阅读?
我看到很多人在各种论坛和整个社区的这个问题上苦苦挣扎.我知道这不是那么直接(尤其是EAP)要弄清楚因为当我想要实现同样的目标时我也非常挣扎.很好,代码分析和搜索互联网上各种实现的所有艰苦工作都是我用的终于能够实现目标了.所有的功劳归功于开源项目及其开发人员的数量.
我想与所有人分享这些知识,因为SO 鼓励这样做:"只要你假装自己在Jeopardy上,就问问并回答你自己的问题也是完全没问题的:用问题的形式说出来."
如何在Android模拟器上启用WiFi?我试图找到这个,但每个人都在混淆WiFi与3G.
我想在手机上调试Android APP(LG nexus 4).我正在旅行,我忘了我的USB线.当我在家工作时,我可以只连接USB电缆并执行命令'adb tcpip 5555'.然后我可以拔下USB线并通过'adb connect IP'连接.
但现在我无法执行第一个命令,因为我没有电缆.我不明白为什么每次都要这样做,因为我之前已经执行过'adb tcpip'命令.
我现在尝试的:
我在我的Android上安装了一个终端应用程序并尝试在那里执行该命令,但是我收到了"找不到设备"错误.也许他看不到自己......
我在"Android开发选项"中搜索任何合理的选项,并启用一切似乎与Wifi的关系.但没有任何帮助.
我搜索StackOverflow,但我发现所有涉及通过USB线连接的答案.我是否可以在不需要电缆的情况下进行此连接?
一些信息:我的Nexus 4没有根源.Android版本是5.1.1.
我以为我应该使用NetworkInterface :: getDisplayName.我得到了一些名字,但是当我选择要连接的网络时,这个名称与我可以看到的名称不同.
请帮忙..
[编辑]
根据洛克斯利的回答:
WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String name = wifiInfo.getSSID();
Run Code Online (Sandbox Code Playgroud) 是否有API以编程方式打开/关闭Android上的WiFi HotSpot?
我应该用什么方法打开/关闭它?
更新:有这个选项可以启用HotSpot,只需打开/关闭WiFi,但这对我来说不是一个好的解决方案.
我的班级必须实施哪个监听器,以便在wifi连接/断开连接时自动检查代码?
我能够手动检查wifi连接/断开连接,但每次我需要从Android设置连接/断开WIFI,然后运行我的程序以获得结果.
我目前的代码很简单:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()==true)
{
tv.setText("You are connected");
}
else
{
tv.setText("You are NOT connected");
}
Run Code Online (Sandbox Code Playgroud)