我已经检查了其他答案,他们没有帮我解决这个错误。也许我做错了什么。
这是我的代码:
void uploadPic() throws FileNotFoundException
{
FileInputStream fis = new FileInputStream(path);
FTPClient con = new FTPClient();
int bytesAvailable;
try
{
con.connect("ftp://ftp.drivehq.com/");
Toast.makeText(this, "Connected to FTP", Toast.LENGTH_SHORT).show();
if (con.login("x", "x"))
{
Toast.makeText(this, "Logged in", Toast.LENGTH_SHORT).show();
con.enterLocalPassiveMode(); // Active mode doesn't really work on Android
bytesAvailable = fis.available();
byte[] barray = new byte[bytesAvailable];
fis.read(barray);
ByteArrayInputStream in = new ByteArrayInputStream(barray);
boolean result = con.storeFile("/CameraUpload.jpg", in);
in.close();
if (result) Log.v("Upload Result", "Succeeded");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
我已经为我的项目添加了INTERNET权限。 logcat显示了这些错误:
android.os.NetworkOnMainThreadException
W/System.err(17531): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
W/System.err(17531): at java.net.InetAddress.lookupHostByName(InetAddress.java:391
我通过Wifi连接到互联网。
答案 0 :(得分:1)
当您尝试从主线程执行网络操作(例如FTP)时,似乎会抛出该异常。出于性能原因,这是不允许的(因此在执行可能需要一段时间的操作时,应用程序似乎不会锁定用户)。假设您使用的是Honeycomb或更高版本,则需要将连接的代码移动到其自己的子线程中。
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
http://developer.android.com/guide/practices/design/responsiveness.html
答案 1 :(得分:0)
最有可能的是,此错误表示您的设备无法将ftp.drivehq.com
解析为其IP地址。我不能肯定地说,因为你只粘贴了部分错误日志。确保您具有网络连接并且DNS正常运行。例如,看看你是否可以通过Android浏览器连接到同一个站点。