Java client.getInputStream返回null
我正试图使用WifiDirect演示api将录制的音频发送到另一个android设备,但来自套接字的输入流总是返回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
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);