标签: android-networking

如何在 Android 中配置新的网络接口

我正在尝试在 Android 平板电脑 (v3.2) 上配置新的网络接口。从终端应用程序我可以“ifconfig eth0 192.168.11.14 netmask 255.255.255.0 up”并且一切正常(以太网电缆通过USB-以太网加密狗连接)

我想让这个配置持久化,但看起来 Android 中没有“接口”文件。网络配置文件在哪里?我需要创建一个新的吗?在哪里?

谢谢,

android-networking

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

Android UnknownHostException Facebook SDK

情况就是这样.我的应用程序运行正常,并能够与URL建立连接.但是,在离开应用程序运行几个小时之后,Facebook请求突然发出以下错误.

09-26 10:01:25.175: W/System.err(252): java.net.UnknownHostException: Host is unresolved: xyz.com:80
09-26 10:01:25.175: W/System.err(252):  at java.net.Socket.connect(Socket.java:1037)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool.getHttpConnection(HttpConnectionManager.java:145)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:67)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:821)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:807)
09-26 10:01:25.175: W/System.err(252):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1051)
09-26 10:01:25.175: W/System.err(252):  at java.net.URL.openStream(URL.java:653)
Run Code Online (Sandbox Code Playgroud)

应用程序和模拟器上都会发生此错误.当我退出我的应用程序并重新连接到Facebook时,连接再次起作用.

我应该注意:当我与自己的服务器建立连接时,不会出现问题.

此错误是由以下行引起的......

mAsyncFacebookRunner.request("fql", paramaters,
                new FQLRequestListener());
Run Code Online (Sandbox Code Playgroud)

java ip android http android-networking

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

我应该在Android中选择Boost Asio还是Aysnc Socket线程?

我正在为Android开发基于网络的UI应用程序,它将执行以下类型的功能

  1. 需要与基于n/w的嵌入式设备上运行的TCP服务器通信(一次> 100).
  2. 定期轮询这些设备以获取更新的信息
  3. 从这些设备发送和接收信息
  4. 以上所有信息都将由应用程序的UI控制和管理

考虑到上述情况,应用程序可能必须为多个连接生成多个线程并管理它们.所以我的查询是

  1. 使用Boost.Asio库开发网络模块是一种好方法吗?或者可以打开多达100个套接字线程进行连接?

  2. 如果使用Boost.Asio,那么将使用NDK单独开发网络模块,访问JNI会到位,这反过来会导致响应缓慢?

或者,还有其他更好的选择吗?期待您的投入!

提前谢谢了.

sockets boost-asio android-networking android-asynctask

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

如何以编程方式获取热点(AP)中连接的设备数量 [Android]

正在开发一个需要显示热点详细信息的应用程序,包括连接到热点的设备数量

我试过这个但没有用,

private int countNumMac()
    {
        int macCount =0;
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("/proc/net/arp"));
            String line;

            System.out.println(br.toString());
            while ((line = br.readLine()) != null) {

                String[] splitted = line.split(" +");
                System.out.println("splitted :"+splitted);

                if (splitted != null && splitted.length >= 4) {
                    // Basic sanity check
                    String mac = splitted[3];
                    if (mac.matches("..:..:..:..:..:..")) {
                        macCount++;
                    } 
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            } …
Run Code Online (Sandbox Code Playgroud)

android android-networking android-wifi

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

重复网络任务的最佳实践?

我有一个小的Android应用程序,我需要每隔几秒钟做一些FTP的东西.在学习了很难在UI线程上运行网络内容的东西是Android不喜欢的东西后,我来到这个解决方案:

// This class gets declared inside my Activity
private class CheckFtpTask extends AsyncTask<Void, Void, Void> {
    protected Void doInBackground(Void... dummy) {
        Thread.currentThread().setName("CheckFtpTask");
        // Here I'll do the FTP stuff       
        ftpStuff();
        return null;
    }
}

// Member variables inside my activity
private Handler checkFtpHandler;
private Runnable checkFtpRunnable;

// I set up the task later in some of my Activitiy's method:
checkFtpHandler = new Handler();
checkFtpRunnable = new Runnable() {
    @Override
    public void run() {
        new CheckFtpTask().execute((Void[])null);
        checkFtpHandler.postDelayed(checkFtpRunnable, 5000);
    }
}; …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-networking android-asynctask

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

Android中的网络是否可用?

在我开始下载某些文件之前,我有这个代码块用于测试是否存在网络连接.我遇到的问题是我也在需要基于网络登录表格的网络上进行测试(类似于酒店,机场甚至飞机).我正在使用的这段代码对于这种情况完全没用.网络报告它isAvailableisConnected在这些情况下.这当然是个问题,因为我启动了失败的异步网络连接.我想知道是否有人知道我能做些什么来确保我"真正"联系,或者如果有人对这个问题有任何建议.

这是我的代码块:

ConnectivityManager manager = (ConnectivityManager) context
        .getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();

Log.e("", "Network info: "+networkInfo+" toString?: "+networkInfo.toString());
Log.e("", "getTypeName: "+networkInfo.getTypeName());
Log.e("", "isAvailable: "+networkInfo.isAvailable());
Log.e("", "isConnected: "+networkInfo.isConnected());
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过我的代码块和结果的用例.

Verizon的1x信号

Network info: NetworkInfo: type: mobile[CDMA - 1xRTT], state: CONNECTED/CONNECTED, reason: connected, extra: , roaming: false, failover: true, isAvailable: true, isConnectedToProvisioningNetwork: false 

toString?: NetworkInfo: type: mobile[CDMA - 1xRTT], state: CONNECTED/CONNECTED, reason: connected, extra: , roaming: false, failover: true, isAvailable: true, isConnectedToProvisioningNetwork: false

getTypeName: mobile
isAvailable: true
isConnected: true …
Run Code Online (Sandbox Code Playgroud)

java authentication networking android android-networking

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

开发一个负责所有网络任务的辅助网络类是不错的做法?

我创建了以下类:

public class AsyncHttpsClientHelper {

public static final int REMOVE_CREDIT_CARD = 1;
public static final int ENABLE_AUTORENEW = 2;
// +10 final ints...

private static AsyncHttpsClientHelper instance = null;
private static Activity activity;
// Some other variables

    private AsyncHttpsClientHelper(Context context) {
        // Initiate variables
    }

    public static AsyncHttpsClientHelper getInstance(Context context) {
        // Guarantees the same instance for this class (Singleton)
    }

    public void performNetworkTask(int networkTaskType, String value)
    {
        switch (networkTaskType)
        {
            case REMOVE_CREDIT_CARD:
            {
                CupsLog.d(TAG, "path: " + Consts.ACCOUNT_REMOVE_CREDIT_CARD_PATH);
                client.post(Consts.ACCOUNT_REMOVE_CREDIT_CARD_PATH …
Run Code Online (Sandbox Code Playgroud)

android helper android-networking android-async-http

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

HTTPS不通过翻新发送一些身份验证标头

我正在Android库上对Web请求使用Retrofit。奇怪的是,如果我使用someWeb请求的HTTPS 失败,并以403失败,并且失败消息是{“ detail”:“未提供身份验证凭据。”}好像我对某些Web请求执行HTTPS我的身份验证令牌未通过

05-09 13:47:10.110    6850-6890/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/accounts/profile/firstupdate/2419/ (1187ms)
05-09 13:47:10.513    6850-6890/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/globalprefs/connectedapps/ (213ms)
05-09 13:47:12.045    6850-6890/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/rewards/rewards?page=1 (408ms)
05-09 13:47:12.354    6850-6962/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/accounts/profile/me/ (686ms)
05-09 13:47:12.969    6850-6964/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/feeds/feeds?page=1&segment_type=content (1279ms)
05-09 13:47:13.079    6850-6965/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/feeds/feeds?page=1&segment_type=friends (1366ms)
05-09 13:47:13.405    6850-6890/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 http://staging.earthmiles.co.uk/api/v1/rewards/rewards?page=2 (1155ms)
05-09 13:48:03.584    7053-7094/com.gmspartnersltd.earthmiles.debug D/Retrofit? <--- HTTP 200 https://staging.earthmiles.co.uk/api/v1/globalprefs/iosapppreferences/1/ (262ms)
05-09 13:48:10.731    7053-7094/com.gmspartnersltd.earthmiles.debug …
Run Code Online (Sandbox Code Playgroud)

android android-networking retrofit okhttp

5
推荐指数
0
解决办法
491
查看次数

WifiManager重新连接返回true但不连接

如果信号足够强,我的应用会创建一个adhoc连接.不幸的是,Android不允许多个WIFI网络,所以我必须断开当前的网络.当信号变弱时,我想重新连接到前一个.

我将以前连接的SSID存储在SharedPreference中,然后使用以下代码:

 for (WifiConfiguration i : list) {
    if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
         wifiManager.disconnect();
         wifiManager.enableNetwork(i.networkId, true);
         boolean success = wifiManager.reconnect();
         if (!success) {
            wifiManager.reassociate();
         }
    }
 }
Run Code Online (Sandbox Code Playgroud)

代码正在运行并WifiManger.reconnect();返回true但我没有连接到以前的网络.

这是我要重新连接的家庭网络的配置:

ID: 10 SSID: ""WLAN.Tele2.net"" BSSID: null FQDN: null REALM: null PRIO: 0
 KeyMgmt: NONE Protocols: WPA RSN
 AuthAlgorithms:
 PairwiseCiphers: TKIP CCMP
 GroupCiphers: WEP40 WEP104 TKIP CCMP
 PSK: 
Enterprise config:
password NULL
subject_match NULL
engine 0
client_cert NULL
ca_cert NULL
anonymous_identity NULL
phase1 NULL …
Run Code Online (Sandbox Code Playgroud)

android android-networking

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

用于互联网连接的Android Broacdcast接收器调用了两次

我暂时面对这个问题并注意到其他一些人也遇到过这个问题,但我无法解决它.

问题

我有一个BroadcastReceiver,它一直在监听互联网的变化.因此,无论何时连接或断开互联网,我都会获得onReceive接收器的状态.

问题是它总是被调用两次.当我连接调试器并在代码中有断点时,我可以看到它被调用两次但我的状态更改代码执行.未连接调试器时,在这种情况下,我的状态更改代码根本不会执行.

我的守则

BroadcastReceiver文件

public class ConnectivityReceiver
    extends BroadcastReceiver {

public static ConnectivityReceiverListener connectivityReceiverListener;

public ConnectivityReceiver() {
    super();
}

@Override
public void onReceive(Context context, Intent arg1) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();

    if (connectivityReceiverListener != null) {
        connectivityReceiverListener.onNetworkConnectionChanged(isConnected);
    }
}

public static boolean isConnected() {
    ConnectivityManager
            cm = (ConnectivityManager) MyApplication.getInstance().getApplicationContext()
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    return activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();
}


public …
Run Code Online (Sandbox Code Playgroud)

android android-networking android-activity android-broadcast android-broadcastreceiver

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