Java client.getInputStream返回null

Java client.getInputStream返回null,java,android,Java,Android,我正试图使用WifiDirect演示api将录制的音频发送到另一个android设备,但来自套接字的输入流总是返回null。 非常感谢您的帮助 下面是代码的一部分 protected String doInBackground(Void... params) { try { ServerSocket serverSocket = new ServerSocket(8988); Log.d(WiFiDirectActivity.TAG

我正试图使用WifiDirect演示api将录制的音频发送到另一个android设备,但来自套接字的输入流总是返回null。 非常感谢您的帮助

下面是代码的一部分

protected String doInBackground(Void... params) {
        try {
            ServerSocket serverSocket = new ServerSocket(8988);
            Log.d(WiFiDirectActivity.TAG, "Server: Socket opened");
            Socket client = serverSocket.accept();
            Log.d(WiFiDirectActivity.TAG, "Server: connection done");
            final File f = new File(Environment.getExternalStorageDirectory(), File.separator + "SuDAB/received/"
                    + "sudab-" + System.currentTimeMillis()
                    + ".3gp");

            File dirs = new File(f.getParent());
            if (!dirs.exists()) {
                dirs.mkdirs();
            }
            f.createNewFile();

            Log.d(WiFiDirectActivity.TAG, "server: copying files " + f.toString());
            InputStream inputstream = client.getInputStream(); 

            copyFile(inputstream, new FileOutputStream(f));
            serverSocket.close();
            return f.getAbsolutePath();
        } catch (IOException e) {
            Log.e(WiFiDirectActivity.TAG, e.getMessage());
            return null;
        }
    }

这就是我将要发送到FileTransferService的文件传递的方式

mContentView.findViewById(R.id.btn_start_client).setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // Allow user to pick an image from Gallery or other
                    // registered apps
                    TextView statusText = (TextView) mContentView.findViewById(R.id.status_text);
                    statusText.setText("Sending: " + lastFile);
                    Log.d(WiFiDirectActivity.TAG, "Intent----------- " + lastFile);
                    Intent serviceIntent = new Intent(getActivity(), FileTransferService.class);
                    Log.d(WiFiDirectActivity.TAG, "File transfer service created...");
                    serviceIntent.setAction(FileTransferService.ACTION_SEND_FILE);
                    serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, lastFile);
                    serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_ADDRESS,
                            info.groupOwnerAddress.getHostAddress());
                    serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_PORT, 8988);
                    getActivity().startService(serviceIntent);
                }
            });
应该是

serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, "file://"+lastFile);

相反。

“这是我将要发送到FileTransferService的文件传递的方式”。不。这样您只传递一个文件名。没意思。您最好发布用于发送文件内容的代码。@greenapps请您再澄清一点,因为我不确定我是否理解。我正在传递文件名。这是因为putExtra在那里接受字符串参数。也请让我知道你的意思发送文件的内容。谢谢。我后来发布了我做错的地方,因为我在调试时注意到有一个FileNotFoundException被抛出。lastFile应以文件开始://。谢谢@greenappsy你不必感谢我,因为一个文件名就足够了。只有您错过了“file://”协议。
serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, lastFile);
serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, "file://"+lastFile);