标签: android-internet

无法从类型中对非静态方法getSystemService(String)进行静态引用

我有这个功能哪个网络连接

public boolean isNetworkConnected() {
    ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo netInfo = conManager.getActiveNetworkInfo();

   if (netInfo == null) {
       // There are no active networks.
       return false;
   } else {
       return true;
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我试图让它静态,以便我可以在它抛出的每个活动中使用它:

无法从类型中对非静态方法getSystemService(String)进行静态引用

我不想每次都创建类的对象.

android android-intent android-networking android-internet

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

在REAL设备上模拟慢速Internet连接?

我需要在甚至2G互联网连接不完全覆盖的条件下测试我的应用程序(即2个条而不是4个,2G个).

我更喜欢通过WiFi进行这些测试.

有没有办法(以编程方式或其他方式)告诉真实设备上的Android操作系统减速或限制因特网连接56 Kbit/s?

注意:我知道如何在模拟器上执行操作.我正在寻找一种在真实设备上执行此操作的方法.

这可能吗?

android android-networking android-wifi android-internet

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

Android Lollipop上的ConnectivityManager.EXTRA_NO_CONNECTIVITY始终为false

我正在使用这段代码来检测Internet连接状态的变化.它适用于Android <5.0,但在API 21上:

intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)
Run Code Online (Sandbox Code Playgroud)

总是假的.如何使此代码在Android 5.0上运行?

我的BroadcastReceiver:

public class NetworkStateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        if(intent.getExtras()!=null) {
            final ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
            final NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            if(networkInfo != null && networkInfo.isConnectedOrConnecting()) {
                Log.d("receiver test", "detected on");
            }
        }
        Log.d("receiver test", Boolean.toString(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)));
        if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
            Log.d("receiver test", "detected off");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-internet android-5.0-lollipop

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

如何在使用改造时处理java.net.UnknownHostException

我正在使用改造来从服务器获取和发布数据.但是,如果我的手机在应用程序中间失去了互联网连接,那么我会看到如下错误:

05-10 08:12:05.559  29369-29400/? D/Retrofit? java.net.UnknownHostException: Unable to resolve host "my.server.com": No address associated with hostname
            at java.net.InetAddress.lookupHostByName(InetAddress.java:394)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
            at java.net.InetAddress.getAllByName(InetAddress.java:214)
Run Code Online (Sandbox Code Playgroud)

我想优雅地处理这个错误.我想抓住异常并显示像"没有互联网连接"这样的祝酒消息.

我正在尝试这样的代码,但我得到一个错误: java.net.UnknownHostException is never thrown in the try block

  try {
      isTokenValid = MyManager.INSTANCE.getService().validate();
  }
  catch (RetrofitError cause) {
      Response r = cause.getResponse();

      if (r != null && r.getStatus() == 403) {
           isTokenValid = false;
      }
  }
  catch (UnknownHostException exception) {
      Toast.makeText(getBaseContext(), "No internet connection", Toast.LENGTH_SHORT).show();
  }
Run Code Online (Sandbox Code Playgroud)

android android-internet

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

为什么ping适用于某些设备而不适用于其他设备?

我的应用程序中有以下代码...

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
return process.waitFor();
Run Code Online (Sandbox Code Playgroud)

...我发现它在某些设备(例如Motorola G)上工作(返回0)但在其他设备(例如Galaxy S3)上不起作用(返回2).我已经检查了Galaxy S3设备,它肯定有一个"/ system/bin/ping"文件,当然我已经确定它确实连接到了互联网.

任何人都有任何想法为什么命令可能无法在某些设备上工作......以及我可以做些什么来让它工作?

android ping connectivity android-internet

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

MediaCodec如何在Android框架内找到编解码器?

我试图了解MediaCodec如何用于硬件解码.

我在android内部的知识非常有限.

以下是我的发现:

有一个xml文件,代表android系统中的编解码器细节.

 device/ti/omap3evm/media_codecs.xml for an example. 
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我们使用Media Codec从Java Application创建编解码器

MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)

应该在xml文件的帮助下找出各自的编码器.

我在做什么?

我试图找出代码的哪一部分正在读取xml并根据给定的'type'找到编解码器.

1)应用层:

   MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)

2)MediaCodec.java - > [ frameworks/base/media/java/android/media/MediaCodec.java ]

     public static MediaCodec createDecoderByType(String type) {

    return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}
Run Code Online (Sandbox Code Playgroud)

3)

private MediaCodec(
        String name, boolean nameIsType, boolean encoder) {
    native_setup(name, nameIsType, encoder);    --> JNI Call.
}
Run Code Online (Sandbox Code Playgroud)

4)JNI实现 - > [ frameworks/base/media/jni/android_media_MediaCodec.cpp ]

static void android_media_MediaCodec_native_setup (..) {
        .......
    const char *tmp = …
Run Code Online (Sandbox Code Playgroud)

android opencore android-internet stagefright openmax

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

要求用户连接到互联网或退出应用程序(android)

我正在开发一个图像库应用程序,其中应用程序从Internet检索图像.

所以我想提示一个对话框,要求用户连接到互联网或退出应用程序.

向用户显示WiFi和运营商网络选项.

android android-internet

7
推荐指数
2
解决办法
7403
查看次数

wpa_supplicant是针对Android设备特定还是Android版本特定的?

我最近购买了索尼xperia P,但它无法检测到ad-hoc网络.经过一些谷歌搜索后我才知道android不支持ad-hoc网络,我没有修改/ system/bin/wpa_supplicant文件,这样它也可以显示ad-hoc网络.我在github上发现了很多修改过的文件,但我不知道应该使用哪一个.文件wpa_supplicant设备是特定的还是特定于Android版本的?我的Android版本是4.0.4(索尼xperia P),任何人都可以给我我的手机可以使用的确切文件.

android android-networking android-wifi android-wireless android-internet

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

检查网络和Internet连接 - Android

我想知道下面的方法是否检查我是否都连接到网络,并且实际上也可以连接到互联网.

不只是连接到不允许我访问互联网的网络?

public boolean isNetworkAvailable() {
    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();

    boolean isAvailable = false;
    if (networkInfo != null && networkInfo.isConnected()) {
        isAvailable = true;
    }
    return isAvailable;
}
Run Code Online (Sandbox Code Playgroud)

我想,确实如此,但我不是百分百肯定.

谢谢

java android android-internet

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

如何在 Android 上检查 WiFi 连接是否有互联网

我正在尝试找到一种方法来检查我当前的 WiFi 连接是否有互联网。

如果我也打开了移动数据,那么使用通常的 ping 选项或尝试访问某个站点将不起作用,因为它会因此返回 true。

android android-wifi android-internet

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