자바로 FTP 등을 구현할 수 있게 해주는 라이브러리인 commons-net를 아이스크림 센드위치에서 사용하고 싶은데,
아래 밑줄친 connect 단계에서 꼭 애러가 발생하는 군요.
package kr.priv.android_ftp2;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FTPClient mFtp = new FTPClient();
try {
Log.d("TAG","1");
mFtp.connect("호스트 주소", 21);
Log.d("TAG","2");
mFtp.login("로그인아이디", "암호");
Log.d("TAG","3");
mFtp.setFileType(FTP.BINARY_FILE_TYPE);
Log.d("TAG","4");
mFtp.enterLocalPassiveMode();
Log.d("TAG","5");
String remote = "/folder1/folder2/file_name.ext";
File downloadfile = new File("/sdcard/download/file_name.ext");
FileOutputStream local = new FileOutputStream(downloadfile);
boolean aRtn = mFtp.retrieveFile(remote, local);// return true if
// successful
local.close();
mFtp.disconnect();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // Using port no=21
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
겔럭시S1인 진저브레드에서는 아무 이상이 없었습니다.
겔럭시S3와 AVD 4.0.3 에서는 꼭 Log.d("TAG","1");까지만 나오고 튕기네요..
새로운 퍼미션이라도 생긴건가요.. 혹시 해결하신 분 댓글 부탁드립니다.