我真的是Android开发的新手,所以这可能是一个愚蠢的问题。我正在使用包含特定用户IP地址和端口的firestone数据库。我能够将该值转换为变量,但是却难以将其传递给套接字连接。
我尝试放置一个公共类而不是受保护的类,并在该论坛上遵循一些指导,但是我认为尚不清楚如何解决它。
public class DataSender extends AsyncTask<String,Void,Void> {
Socket s;
DataOutputStream dataOutputStream;
PrintWriter printWriter;
@Override
protected Void doInBackground(String... voids) {
String currentuser = FirebaseAuth.getInstance().getCurrentUser().getEmail();
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("User").document(currentuser);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
String UIPaddress = document.getString("ipAddress");
String uport = document.getString("port");
} else {
Log.d("LOGGER", "No such document");
}
}
}
});
String messg=voids[0];
try {
s=new Socket(UIPaddress ,uport );
printWriter=new PrintWriter(s.getOutputStream());
printWriter.write(messg);
printWriter.flush();
printWriter.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
以上代码抛出错误无法解析符号'UIPaddress'。 无法解析符号“ uport”。
答案 0 :(得分:0)
最后,我可以使用Global变量解决问题。希望这会对其他新手有所帮助。
Socket s;
DataOutputStream dataOutputStream;
PrintWriter printWriter;
public static String uIpaddress ;
public static int uport;