【问题标题】:android onActivityResult socket timeoutandroid onActivityResult 套接字超时
【发布时间】:2026-01-14 18:10:01
【问题描述】:

当我尝试从 onActivityResult 启动套接字时,它总是超时...我试图做的是启动从 onActivityResult 启动套接字连接但没有成功的 Activity,但是当套接字从某个地方开始没有问题时否则不会从 onActivityResult 调用。这是我调用 startActivityForResult 和 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");
            }
        }
    }

【问题讨论】:

  • 您说,您得到了超时,但您只是向我们展示了 onActivityResult 方法 - onActivityResult 方法无法为您的套接字连接创建超时 - 它必须与您的方式有关创建连接。请在您尝试创建连接的位置发布代码。
  • 为了避免发布一大堆代码,如果你替换 Intent myIntent = new Intent(com.blah.Blah.Ads);开始活动(我的意图); with Socket socket = new Socket("ipaddr",port);你得到一个套接字超时,显然这将被包裹在 try catch
  • 当您遇到异常时,没有什么是显而易见的 ;-) 请修改代码,以便它反映您正在尝试做的事情 - 这样代码也可以由其他人运行并以这种方式进行测试.

标签: android sockets android-intent timeout


【解决方案1】:

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

检查这些:

  • 您在清单中拥有 Internet 权限
  • 实际的网络调用不在主线程中

【讨论】: