У меня есть функция передачи файлов с компьютера (клиент) на Android (сервер) с использованием сокетов.Открывая соединение на стороне сервера, я запускаю диалоговое окно с предупреждением, чтобы указать соединение нажатием кнопки.Теперь мне нужно, чтобы при получении файла диалоговое окно с предупреждением закрывалось автоматически.
Вот моя функция кнопки
POButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final AlertDialog.Builder dele = new AlertDialog.Builder(getActivity());
dele.create();
dele.setCancelable(false);
dele.setTitle("Waiting for File. . .");
final Socket[] socket = new Socket[1];
final ServerSocket[] server = new ServerSocket[1];
final BufferedReader[] br = new BufferedReader[1];
final PrintWriter[] pw = new PrintWriter[1];
final String ip = getIpAddress(getContext());
dele.setMessage("IP Address:\n" + ip);
new Thread(new Runnable() {
@Override
public void run(){
try {
while(true){
server[0] = new ServerSocket(0);
server[0].close();
server[0] = new ServerSocket(8998);
socket[0] = server[0].accept();
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String curDate = dateFormat.format(date);
File sdcard = Environment.getExternalStorageDirectory();
File myFile = new File(sdcard,"TestReceived"+curDate+".csv");
br[0] = new BufferedReader(new InputStreamReader(socket[0].getInputStream()));
pw[0] = new PrintWriter(new FileWriter(myFile));
try {
String line;
for (line = br[0].readLine(); line != null; line = br[0].readLine()){
pw[0].println(line);
}
pw[0].flush();
pw[0].close();
}
catch (Exception e){
System.out.printf("Can't write to file. ", e);
}
finally {
new toastview().toast("IP Address:\n"+ ip + curDate, getActivity()).show();
if (socket[0] != null){
br[0].close();
pw[0].close();
server[0].close();
}
}
}
}
catch (Exception e){
e.printStackTrace();
}
}
}).start();
dele.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (socket[0] != null){
try {
br[0].close();
pw[0].close();
server[0].close();
} catch (IOException e) {
e.printStackTrace();
}
}
dialogInterface.dismiss();
}
});
dele.show();
}
});
return inflate;
}
Я уже попробовал эти функции, но она не работает.
dele.dismiss();
dele.cancel();
dialogInterface.dismiss();
Отображается только ошибка «Символ не найден».