I am working on file sharing using asmack and xmpp. I can send the file, but could not receive the file on another device. I did so much research and development, I found that many methods tried everything, but did not succeed. It seems that I am making a small mistake, I tried hard, but I have no solution for my problem. The code I used to send the file is:
d.findViewById(R.id.btnsendphoto).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!filepath.equals("")) { configureProviderManager(connection); FileTransferNegotiator.IBB_ONLY = true; FileTransferNegotiator.setServiceEnabled( connection, true); mFileTransferManager = new FileTransferManager( connection); String to = connection.getRoster() .getPresence("cac6ba9dc9c6ac67@pc") .getFrom(); final OutgoingFileTransfer transfer = mFileTransferManager .createOutgoingFileTransfer(to); File file = new File(filepath); try { configureProviderManager(connection); transfer.sendFile(file, "test_file"); } catch (XMPPException e) { e.printStackTrace(); } new AsyncTask<Void, Void, Void>() { protected void onPreExecute() { } @Override protected Void doInBackground( Void... params) { while (!transfer.isDone()) { if (transfer.getStatus().equals( "Error")) { Log.d("file transfer", "ERROR!!! " + transfer .getError()); } else if (transfer.getStatus() .equals("Cancelled") || transfer.getStatus() .equals("Refused")) { Log.d("file transfer", "Cancelled!!! " + transfer .getError()); } try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } return null; }; protected void onPostExecute(Void result) { if (transfer.getStatus().equals( "Refused") || transfer.getStatus().equals( "Error") || transfer.getStatus().equals( "Cancelled")) { Log.i("file transfer", "refused cancelled error " + transfer .getError()); } else { Log.i("file transfer", "Success: " + transfer.getFileName()); messages.add("file sent"); setListAdapter(); } }; }.execute(); } d.dismiss(); } });
I can send the file. I got this message file sent for sending, here configureProviderManager this and I tried many ways that I got on Google, but I would like to mention one of them here.
at first:
public void ReceiveFile() { System.out.println("in ReceiveFile"); Thread thread = new Thread() { public void run() { System.out.println("in Thread"); configureProviderManager(connection); // Create the file transfer manager final FileTransferManager managerListner = new FileTransferManager( connection); FileTransferNegotiator.setServiceEnabled(connection, true); Log.i("File transfere manager", "created"); // Create the listener managerListner .addFileTransferListener(new FileTransferListener() { public void fileTransferRequest( final FileTransferRequest request) { Log.i("Recieve File", "new file transfere request"); Log.i("file request", "from" + request.getRequestor()); IncomingFileTransfer transfer = request .accept(); Log.i("Recieve File alert dialog", "accepted"); try { transfer.recieveFile(new File("/sdcard/" + request.getFileName())); while (!transfer.isDone() || (transfer.getProgress() < 1)) { Thread.sleep(1000); Log.i("Recieve File alert dialog", "still receiving : " + (transfer .getProgress()) + " status " + transfer.getStatus()); if (transfer.getStatus().equals( Status.error)) { // Log.i("Error file", // transfer.getError().getMessage()); Log.i("Recieve File alert dialog", "cancelling still receiving : " + (transfer .getProgress()) + " status " + transfer .getStatus()); transfer.cancel(); break; } } } catch (XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }; thread.start(); }
Debugging this code I do not even receive this request to transfer a new log file. Please tell me what mistake I am making and how I can fix it. Thanks in advance.
android xmpp asmack
Android Rockss
source share