【发布时间】: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