1

私のAndroidプロジェクトには、「MainActivity.java」という1つのアクティビティしかありません。同じパッケージ「GetSocket.java」に別のクラスファイルを追加しました。

GetSocket.javaの機能は、Webサイトでホストされている特定のサーバーへのソケット接続を介して文字列を返すことです。GetSocket.javaは、Javaアプリケーションとして単独で実行する場合は問題なく機能します。

しかし、Androidアクティビティから使用して呼び出すと、意図したメッセージが返されません。StackTraceも取得できない例外を除いて、失敗するだけです。

これは、Android4.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スレッドを介したソケットプログラミングは許可されていません。非同期タスクを使用して、別のバックグラウンドスレッドでソケットを渡しました。機能した。

于 2012-09-27T20:34:02.100 に答える
1

インターネット許可についてマニフェストを確認してください:)

于 2012-09-12T03:52:29.350 に答える