标签: networkinfo

如何在Android 9.0(PIE)中获取WIFI SSID?

如何在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

6
推荐指数
2
解决办法
7943
查看次数

API 29 已弃用 NetworkInfo

我想检查网络连接。所以,我用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)

你可以在这里看到折旧信息

在此处输入图片说明

android deprecated kotlin networkinfo

6
推荐指数
1
解决办法
1万
查看次数

NetworkInfo无法正确响应运行Nougat的手机上的网络更改

前言:在运行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)

java android background-process networkinfo

5
推荐指数
1
解决办法
579
查看次数

5
推荐指数
1
解决办法
191
查看次数

如何在Android上获取网络状态更改?

我已经为“ CONNECTIVITY_CHANGE”广播了接收器。当我用这个打印多余的东西时:

intent.getExtras().toString() 
Run Code Online (Sandbox Code Playgroud)

我可以看到,如果禁用WIFI,则会收到2次网络更改。

  1. 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 networkinfo android-connectivitymanager

0
推荐指数
1
解决办法
1万
查看次数