我的Mac总是连接到默认网络.我想更改默认的wifi网络.我怎样才能做到这一点?
感谢致敬
我正在寻找一种方法来获取我项目中当前连接的WiFi网络的MAC地址和SSID.我已经使用Tony Million的Reachability决定用户何时使用WiFi网络,并且仅测试Kenial的NICInfo,以发现它只提供iPhone的WiFi MAC地址.虽然这两个项目都以自己的方式帮助很大,但他们没有完成工作.我想知道是否有公共API(对于某些Apple App Approval)或某些后门来实现这一点.
我有以下BroadcastRecevier:
public class WiFiConnectionEventsReceiver extends BroadcastReceiver {
private static final String TAG = WiFiConnectionEventsReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, @NonNull Intent intent) {
Log.v(TAG, "action: " + intent.getAction());
Log.v(TAG, "component: " + intent.getComponent());
Bundle extras = intent.getExtras();
if (extras != null) {
for (String key : extras.keySet()) {
Log.v(TAG, "key [" + key + "]: " +
extras.get(key));
}
} else {
Log.v(TAG, "no extras");
}
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
if (netInfo != null && …
Run Code Online (Sandbox Code Playgroud) 在遵循本在线指南后,我已经为此工作了几天。我正在使用目标 API 30(在使用 Android 11 的设备上构建)。尝试使用此方法获取 Wifi SSIDnetworkCapabilities
会不断返回 null,而折旧的方法wifiManager.connectionInfo.ssid
会返回正确的 SSID。有什么想法我做错了吗?我知道 API 31 需要更改以包含,FLAG_INCLUDE_LOCATION_INFO
但我相信这应该适用于 API 30。有什么想法吗?
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.util.Log
import androidx.lifecycle.LiveData
private const val TAG = "NetworkStatus"
enum class NetworkStatus {
UNAVAILABLE,
CONNECTED_TO_XXXX,
CONNECTED_TO_OTHER,
CONNECTION_LOST
}
class NetworkStatusHelper(private val context: Context) : LiveData<Pair<NetworkStatus, String>>() {
private lateinit var connectivityManagerCallback: ConnectivityManager.NetworkCallback
var connectivityManager: ConnectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val wifiManager =
context.getSystemService(Context.WIFI_SERVICE) …
Run Code Online (Sandbox Code Playgroud) android ssid android-wifi kotlin android-connectivitymanager
如果是,我们是否还可以获得有关网络配置的其他信息?
一种有用的方法是获取当前网络的SSID.有没有API可以做到这一点?
更新:我在这里发现了一个类似的问题:
是否可以使用Monotouch连接IPhone连接的WIFI SSID?
我发现有可能检查Wi-Fi状态,但无法检查SSID. https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs 所以有人知道吗?感谢所有评论
我想获取所有我已添加密码的WiFi详细信息。
码:
WifiManager wifiManager = (WifiManager) getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> configuredList = wifiManager.getConfiguredNetworks();
Run Code Online (Sandbox Code Playgroud) 在此连接插件的帮助下,我可以使用以下代码获取连接状态,即移动网络、wifi 或无:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:connectivity/connectivity.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _connectionStatus = 'Unknown'; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个具有自定义名称的 WiFi Direct 组。但在探索了所有选项之后,我发现我们无法更改名称,并且 Android 操作系统自行决定WiFi Direct 组的名称
我什至尝试使用Reflection来实现相同的目的,但它在Android Nougat 及更高版本上不起作用。
我使用以下代码创建 WiFi Direct 组:
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = manager.initialize(this, getMainLooper(), null);
manager.createGroup(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(getApplicationContext(), "Group Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int i) {
Toast.makeText(getApplicationContext(), "Group Creation Failed", Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试 PDANet+ 应用程序时,他们能够创建一个带有后缀 PDANet 的 WiFi Direct 组名称。
例如:
我的应用程序生成以下组名称:DIRECT-mq-ONEPLUS
而 PDANet 生成:DIRECT-Dj-ONEPLUS A6000-PdaNet
所以我想知道他们如何将后缀添加到 WiFi Direct 组名称中。如果有人能在这方面帮助我,那将会有很大帮助。!
谢谢。!
我在 android Q 之前的代码在这里,但对于 android Q 这个函数返回“未知的 ssid”。我知道对于 android Q 必须使用此 ConnectivityManager.NetworkCallback 和 ConnectivityManager#getNetworkCapability 和 ConnectivityManager#getLinkProperties。但我找不到示例代码或 GUID。
private String get_connected_ssid() {
String s1 = null ,s2 = null;
try {
WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
assert wifi != null;
WifiInfo wifiinfo = wifi.getConnectionInfo();
List<WifiConfiguration> listOfConfigurations = wifi.getConfiguredNetworks();
for (int index = 0; index < listOfConfigurations.size(); index++) {
WifiConfiguration configuration = listOfConfigurations.get(index);
if (configuration.networkId == wifiinfo.getNetworkId()) {
s1 = configuration.SSID;
}
}
}catch (Exception e){
e.printStackTrace();
}
/* NetworkInfo Deprecated in …
Run Code Online (Sandbox Code Playgroud) ssid ×10
android ×4
android-wifi ×4
iphone ×3
wifi ×3
ios ×2
android-10.0 ×1
android-connectivitymanager ×1
default ×1
detect ×1
flutter ×1
kotlin ×1
mac-address ×1
macos ×1
networking ×1
wifi-direct ×1
wifimanager ×1
wifip2p ×1
xamarin.ios ×1
xcode ×1