相关疑难解决方法(0)

不推荐使用ConnectivityManager.CONNECTIVITY_ACTION

在Android N中,官方网站上提到"针对Android N的应用不接收CONNECTIVITY_ACTION广播".并且还提到JobScheduler可以用作替代方案.但是JobScheduler它没有提供与CONNECTIVITY_ACTION广播完全相同的行为.

在我的Android应用程序中,我使用此广播来了解设备的网络状态.我想知道,如果在该状态CONNECTINGCONNECTED的帮助下CONNECTIVITY_ACTION广播和它是最适合我的要求.

现在它已被弃用,任何人都可以建议我获得当前网络状态的替代方法吗?

android

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

使用改造发送带有参数的发布请求

我尝试使用Retrofit库在Android上使用API​​时失败,但在使用POSTMAN时我可以看到预期的结果.

邮递员设定

  • api url(基地+控制器)

  • HTTP方法设置为POST

  • 点击了from-data或x-www-form-urlencoded

  • 然后我在键/值字段上传递两个参数.

ANDROID改装设置

@POST("/GetDetailWithMonthWithCode")
void getLandingPageReport(@Query("code") String code,
                          @Query("monthact") String monthact,
                          Callback<LandingPageReport> cb);

@FormUrlEncoded
@POST("/GetDetailWithMonthWithCode")
void getLandingPageReport(@Field("code") String code,
                          @Field("monthact") String monthact,
                          Callback<LandingPageReport> cb);
Run Code Online (Sandbox Code Playgroud)

这些选项都不起作用.但结果是{}.

UPDATE

使用标准HttpClient(和HttpPost)类的相同设置工作正常.

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);

List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("code", "testcode"));
urlParameters.add(new BasicNameValuePair("monthact", "feb-2015"));

post.setEntity(new UrlEncodedFormEntity(urlParameters));

HttpResponse response = client.execute(post);
Run Code Online (Sandbox Code Playgroud)

为什么我不能做这个请求并在Retrofit中获得正确的响应?

更新2

@POST("/GetDetailWithMonthWithCode")
void getLandingPageReport(@Query("code") String code,
                          @Query("monthact") String monthact,
                          Callback<List<LandingPageReport>> cb);

@FormUrlEncoded
@POST("/GetDetailWithMonthWithCode")
void getLandingPageReport(@Field("code") String …
Run Code Online (Sandbox Code Playgroud)

post android retrofit

28
推荐指数
4
解决办法
11万
查看次数

Android getAllNetworkInfo()已弃用.有什么选择?

我想使用连接管理器,它提供方法getAllNetworkInfo()来检查Android中的网络可用性.此方法在API级别23中已弃用.而Developer doc建议使用getAllNetworks().我试过但是没有得到我从旧代码中获得的确切功能.请有人指导我如何使用getAllNetworks()方法.以下是我正在使用的代码:

 public boolean isConnectingToInternet(){
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null) 
      {
          @SuppressWarnings("deprecation")
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
          //use getAllNetworks() instead
          if (info != null) 
              for (int i = 0; i < info.length; i++) 
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }
      }
      return false;
}
Run Code Online (Sandbox Code Playgroud)

networking android android-6.0-marshmallow

27
推荐指数
3
解决办法
3万
查看次数

在API级别28中不推荐使用activeNetworkInfo.type

在此处输入图片说明我想使用提供方法activeNetworkInfo.type的连接管理器来检查Android中的网络类型。此方法在API级别28中已弃用。因此在API 28中检查网络类型的解决方案是什么。我的代码是:

/**
 * Check Wi Fi connectivity
 */
fun isWiFiConnected(context: Context): Boolean {
    val connManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    return connManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI
}
Run Code Online (Sandbox Code Playgroud)

我的摇篮就像:

compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
    }
Run Code Online (Sandbox Code Playgroud)

android deprecated kotlin

15
推荐指数
6
解决办法
6416
查看次数

Android:在Android设备上检查3G或Wifi网络是否开启或可用

如何以编程方式在Android设备上检查该网络是否可用,当我们尝试连接Wifi和3G等网络时,会抛出消息或Toast消息.

networking android wifi 3g

13
推荐指数
3
解决办法
3万
查看次数

检查手机是否使用WIFI或Data/3G

假设在设备上启用了WIFI和Data/3G,我如何检查用户当前是否通过wifi或数据计划使用互联网,假设它们都已启用.所以我不需要检查它们是启用还是禁用,我想检测用户实际使用的是哪一个.

我一直在做以下,这是唯一的解决方案吗?

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
    String ssid = wifiInfo.getSSID();
}
Run Code Online (Sandbox Code Playgroud)

android

12
推荐指数
2
解决办法
2万
查看次数

API 29 中不推荐使用 ConnectivityManager.getActiveNetworkInfo() / NetworkInfo。有什么替代方法?

似乎整个 NetworkInfo在 API 29 上都被弃用了。

所以我正在寻找一种替代方法来检查网络是否已连接。例如替代

connectivityManager.activeNetworkInfo?.isConnected == true
Run Code Online (Sandbox Code Playgroud)

旁注:我知道现在有一个回调,但我想同步获取此信息。另外,当然我知道它可能不是一个精确的信息,尽管我想拥有它。

android android-connectivitymanager

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

检查 API29 上的互联网连接

我使用以下方法来检查互联网连接:

public boolean isInternetConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isConnected();
}
Run Code Online (Sandbox Code Playgroud)

不过,我发现NetworkInfogetActiveNetworkInfo()、 和isConnected()现在都已弃用。我已经检查了几个线程:

ConnectivityManager getNetworkInfo(int) 已弃用

activeNetworkInfo.type 在 API 级别 28 中已弃用

不过,它们都使用已弃用的方法提供答案。我一直环顾四周,没有任何运气。是否有任何简单的方法来检查互联网连接,或者我应该继续使用我的方法并忽略已弃用的方法,因为它适用于 API29?

谢谢。

java android

2
推荐指数
1
解决办法
2592
查看次数

getAllNetworkInfo()已弃用

我写了这段代码.

ConnectivityManager connectivity = (ConnectivityManager)
            context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (connectivity != null) {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {}
Run Code Online (Sandbox Code Playgroud)

但是不推荐使用getAllNetworkInfo().请帮忙.谢谢.

connection networking android android-6.0-marshmallow

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