1

在我的 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;
 }
}
4

2 回答 2

2

抱歉回复晚了。找到我的解决方案的问题。从 4.0 开始,Android 不允许通过 UI 线程进行套接字编程。我使用 Async Task 在单独的后台线程中处理套接字。有效。

于 2012-09-27T20:34:02.100 回答
1

检查您的清单以获得互联网许可:)

于 2012-09-12T03:52:29.350 回答