如何在Android 9.0(PIE)中获取WIFI SSID?我的代码在android 8.1.0之前可以正常工作,但在android 9.0上却无法正常工作
ConnectivityManager connManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo.isConnected()) {
WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wifiInfo.getSSID();
String name = networkInfo.getExtraInfo();
String ssid = "\"" + wifiInfo.getSSID() + "\"";
}
Run Code Online (Sandbox Code Playgroud)
但是此代码不适用于Android 9.0
android android-wifi networkinfo android-connectivitymanager android-9.0-pie
我想检查网络连接。所以,我用ConnectivityManager.activateNetworkInfo.isConnected
不幸的是,这在 API 29 中已被弃用。
private fun isOnline(): Boolean {
val connectivityManager = appContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到折旧信息
前言:在运行6.0.1的手机上运行正常.但是在运行7.1.1的手机上,它不是,如下所示.
build.gradle(模块:app)
compileSdkVersion 25
buildToolsVersion "25.0.0"
applicationId "com.gesslar.threshvote"
minSdkVersion 19
targetSdkVersion 25
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<receiver
android:name=".NetworkChangeReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
NetworkUtil.java 我有一个BroadcastReceiver,我用它来简单地调用NetworkUtil.updateNetworkStatus(context);
public static void updateNetworkStatus(Context context) {
final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
if (activeNetwork == null) {
Log.d(TAG, "NO CONNECTION INFORMATION");
return;
}
if (activeNetwork.isConnected()) {
Log.d(TAG, "WE ARE CONNECTED TO A NETWORK");
} else {
Log.d(TAG, "WE ARE NOT CONNECTED TO A NETWORK");
return;
}
Log.d(TAG, …Run Code Online (Sandbox Code Playgroud) 我想知道哪种方法可以精确地检查网络状态以成功建立连接。
我已经为“ CONNECTIVITY_CHANGE”广播了接收器。当我用这个打印多余的东西时:
intent.getExtras().toString()
Run Code Online (Sandbox Code Playgroud)
我可以看到,如果禁用WIFI,则会收到2次网络更改。
但是,当我尝试使用
NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
Run Code Online (Sandbox Code Playgroud)
它说,此API已被弃用。在那之后,我试图用这个
int networkType = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_TYPE);
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(networkType);
Run Code Online (Sandbox Code Playgroud)
但是,getNetworkInfo也已被弃用。
他们给我的唯一选择是使用getActiveNetworkInfo或getActiveNetwork。
如果使用它,我将获得2次广播,这将给我相同的网络信息。
有没有更好的方法来处理Android中的网络状态?
特别提示:
感谢您的快速回复,但是我没有寻找一种检查是否可以连接互联网的方法。
我需要知道哪个网络已断开连接。我正在寻找网络状态更改。
android ×5
networkinfo ×5
android-connectivitymanager ×2
java ×2
android-wifi ×1
deprecated ×1
kotlin ×1