小编Nou*_*eil的帖子

通过 wifidirect 发送多个文件

我想通过 wifidirect 将多个选定的文件发送到服务器。问题是,仅发送选定的第一个文件。根据我在网上找到的资源,扩展IntentService的FileTransferService处理异步请求,该服务使用工作线程依次处理每个Intent,并自动停止。有人知道为什么其他文件没有发送到服务器吗?任何帮助表示赞赏。

这是我启动文件传输服务的活动:

 ArrayList<String> uris = new ArrayList<String>();
     for( int i=0 ; i<f22.size(); i++ )
     {

       Uri uri = Uri.fromFile(f22.get(i));

       uris.add(uri.toString());

     }

 serviceIntent.setAction(FileTransferService.ACTION_SEND_FILE);
 for(int i=0; i<uris.size();i++)
     {
      serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_ADDRESS,
         DeviceDetailFragment.info.groupOwnerAddress.getHostAddress());

      serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_PORT, 8988);


      serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, uris.get(i).toString());

      startService(serviceIntent);


     } 
Run Code Online (Sandbox Code Playgroud)

这是FileTransferService中的onHnadleintent函数

protected void onHandleIntent(Intent intent) {

    Context context = getApplicationContext();
    if (intent.getAction().equals(ACTION_SEND_FILE)) {

        String fileUri = intent.getExtras().getString(EXTRAS_FILE_PATH);
        String host = intent.getExtras().getString(EXTRAS_GROUP_OWNER_ADDRESS);
        Socket socket = new Socket();
        int port = intent.getExtras().getInt(EXTRAS_GROUP_OWNER_PORT);

        try {
            Log.d(WiFiDirectActivity.TAG, "Opening client socket - ");
            socket.bind(null);
            socket.connect((new InetSocketAddress(host, port)), SOCKET_TIMEOUT);

            Log.d(WiFiDirectActivity.TAG, …
Run Code Online (Sandbox Code Playgroud)

android intentservice wifi-direct

2
推荐指数
1
解决办法
762
查看次数

标签 统计

android ×1

intentservice ×1

wifi-direct ×1