我对Android开发很陌生,所以这可能是一个愚蠢的问题。我正在使用一个firestone数据库,其中包含特定用户的IP地址和端口。我能够将该值转换为变量,但很难将该值传递给套接字连接。
我试图安排一个公共课而不是保护,并在这个论坛上遵循一些指导,但我认为仍然不清楚如何解决它。
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'。
最后,我能够通过使用Global变量来解决我的问题。希望这会有助于其他新手。
Socket s;
DataOutputStream dataOutputStream;
PrintWriter printWriter;
public static String uIpaddress ;
public static int uport;