我正在尝试在 Android 平板电脑 (v3.2) 上配置新的网络接口。从终端应用程序我可以“ifconfig eth0 192.168.11.14 netmask 255.255.255.0 up”并且一切正常(以太网电缆通过USB-以太网加密狗连接)
我想让这个配置持久化,但看起来 Android 中没有“接口”文件。网络配置文件在哪里?我需要创建一个新的吗?在哪里?
谢谢,
情况就是这样.我的应用程序运行正常,并能够与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) 我正在为Android开发基于网络的UI应用程序,它将执行以下类型的功能
考虑到上述情况,应用程序可能必须为多个连接生成多个线程并管理它们.所以我的查询是
使用Boost.Asio库开发网络模块是一种好方法吗?或者可以打开多达100个套接字线程进行连接?
如果使用Boost.Asio,那么将使用NDK单独开发网络模块,访问JNI会到位,这反过来会导致响应缓慢?
或者,还有其他更好的选择吗?期待您的投入!
提前谢谢了.
正在开发一个需要显示热点详细信息的应用程序,包括连接到热点的设备数量
我试过这个但没有用,
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应用程序,我需要每隔几秒钟做一些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) 在我开始下载某些文件之前,我有这个代码块用于测试是否存在网络连接.我遇到的问题是我也在需要基于网络登录表格的网络上进行测试(类似于酒店,机场甚至飞机).我正在使用的这段代码对于这种情况完全没用.网络报告它isAvailable和isConnected在这些情况下.这当然是个问题,因为我启动了失败的异步网络连接.我想知道是否有人知道我能做些什么来确保我"真正"联系,或者如果有人对这个问题有任何建议.
这是我的代码块:
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)
以下是我尝试过我的代码块和结果的用例.
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) 我创建了以下类:
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库上对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) 如果信号足够强,我的应用会创建一个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) 我暂时面对这个问题并注意到其他一些人也遇到过这个问题,但我无法解决它.
问题
我有一个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
android ×8
java ×2
android-wifi ×1
boost-asio ×1
helper ×1
http ×1
ip ×1
networking ×1
okhttp ×1
retrofit ×1
sockets ×1