2012-10-12 133 views
0

当我尝试从onActivityResult启动套接字时,它总是超时......我试图做的是启动Activity,它从onActivityResult开始套接字连接但没有成功,但是当套接字没有问题从其他地方开始,而不是从onActivityResult调用。这是我调用startActivityForResult和onActivityResult的代码。我很确定我在做这个错误...任何推向正确的方向?android onActivityResult套接字超时

public void scanNow(View view){ 
     Intent intent = new Intent("com.blah.Blah.client.android.SCAN"); 
     intent.putExtra("com.blah.Blah.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); 
     startActivityForResult(intent, 0); 
     Log.d("debug tag", "started activity"); 

    } 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 
     Log.d("debug tag", "inside onActivityResult"); 
     if (requestCode == 0) 
     { 
      if (resultCode == RESULT_OK) 
      { 
       String contents = intent.getStringExtra("SCAN_RESULT"); 
       String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
       Log.i("debug tag", "contents: "+contents+" format: "+format); 
       Intent myIntent = new Intent(com.blah.Blah.Ads); 
       startActivity(myIntent); 

       // Handle successful scan 
      } 
      else if (resultCode == RESULT_CANCELED) 
      { 
       // Handle cancel 
       Log.i("debug tag", "Cancelled from main"); 
      } 
     } 
    } 
+0

你说,你得到一个超时,但你”仅向我们展示onActivityResult方法 - onActivityResult方法不能为您的套接字连接创建超时 - 它必须是您创建连接的方式。请在您尝试创建连接的位置发布代码。 – Darwind

+0

,以防止发布一大堆代码,如果你替换Intent myIntent = new Intent(com.blah.Blah.Ads); startActivity(myIntent);使用Socket套接字=新套接字(“ipaddr”,端口);你得到一个套接字超时,很明显,这将被包裹在try catch – user1661396

+0

当你得到一个异常时,没有什么是显而易见的;-) 请修改代码,以便它反映你正在尝试做什么 - 这样代码也可以由他人经营并以此方式进行测试。 – Darwind

回答

0

如果你可以发布实际的代码不起作用,也许有人可以帮助你更好。 什么是连接工作的“别的地方”?你是否在相同的设备,应用程序和活动中尝试过它?这两个地方的代码是否完全一样?

检查这些:

  • 你必须在清单
  • 上网权限实际组网调用不是在主线程