FtpService.java
public class FtpService extends Service {
private FtpServer server;
private static String rootPath;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
//FTP 共享目录
rootPath = Environment.getExternalStorageDirectory().getAbsolutePath();
try {
init();
Toast.makeText(this, "启动ftp服务成功", Toast.LENGTH_SHORT).show();
} catch (FtpException e) {
e.printStackTrace();
Toast.makeText(this, "启动ftp服务失败", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onDestroy() {
super.onDestroy();
release();
Toast.makeText(this, "关闭ftp服务", Toast.LENGTH_SHORT).show();
}
public void init() throws FtpException {
release();
startFtp();
}
private void startFtp() throws FtpException {
SharedPreferences sp = getSharedPreferences(getPackageName(), Context.MODE_PRIVATE);
boolean isAnonymous = sp.getBoolean("ftp_anonymous",true); //是否匿名
String userName = sp.getString("ftp_username", "admin");
String password = sp.getString("ftp_password","123456");
int port = sp.getInt("ftp_port",2121);
FtpServerFactory serverFactory = new FtpServerFactory();
//设置访问用户名和密码还有共享路径
BaseUser baseUser = new BaseUser();
if(isAnonymous) {
baseUser.setName("anonymous"); //匿名
}else{
baseUser.setName(userName);
baseUser.setPassword(password);
}
baseUser.setHomeDirectory(rootPath);
List<Authority> authorities = new ArrayList<Authority>();
authorities.add(new WritePermission());
baseUser.setAuthorities(authorities);
serverFactory.getUserManager().save(baseUser);
ListenerFactory factory = new ListenerFactory();
factory.setPort(port);
serverFactory.addListener("default", factory.createListener());
server = serverFactory.createServer();
server.start();
}
public void release() {
stopFtp();
}
private void stopFtp() {
if (server != null) {
server.stop();
server = null;
}
}
}
开启:
startService(new Intent(this,FtpService.class));
关闭:
stopService(new Intent(this, FtpService.class));
Demo 源码下载:
https://download.csdn.net/download/weixin_42065195/12548952