在我的Android项目中,我只有一个Activity - “MainActivity.java”。我在同一个包“GetSocket.java”中添加了另一个类文件。
GetSocket.java的功能是它将通过Socket连接返回一个字符串到网站中托管的特定服务器。如果单独作为Java应用程序运行,GetSocket.java可以正常工作。
但是当我使用Android Activity调用它时,它并没有返回给我预期的消息,它只是因为我无法获得StackTrace的异常而失败。
请注意,这是在Android 4.1版本中运行的结果。
但是相同的代码适用于Android 2.2,并为我提供了预期的信息。
MainActivity.java
public class MainActivity
{
TextView t= (TextView) getViewById(R.id.textView1);
//..
//some code
//..
String msg=GetSocket.getMessage();
//..
//some more code
//
}
GetSocket.java
public class GetSocket
{
public static String getMessage()
{
String b;
Socket s=new Socket("<IP-Address",<Port-number>);
InputStream i=s.getInputStream();
int length=i.read(b)
return b;
}
}
答案 0 :(得分:2)
对于迟到的回复感到抱歉。发现我的解决方案的问题。 从4.0开始,Android不允许通过UI线程进行套接字编程。我使用Async Task在单独的后台线程中处理套接字。它奏效了。
答案 1 :(得分:1)
检查您的清单是否有互联网权限:)