Autore Topic: Copia di un file da android a una cartella condivisa sulla rete  (Letto 824 volte)

Offline robytlk

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Copia di un file da android a una cartella condivisa sulla rete
« il: 09 Luglio 2015, 15:38:13 CEST »
0
 Salve a tutti.
Sono alle prese col cercare di capire come si fa una app !!!! Scusate lo sfogo ma chi ha progettato la combinazione tra Java e Andoid non sta molto bene?  :D :D

Comunque ecco il mio problema: Devo fare una operazione complicatissima che in ogni altro linguaggio si fa con un solo comando.
Ho capito che con Java ci vogliono almeno 20 righe di codice: DEVO COPIARE UN FILE DALLA SD del palmare su una cartella condivisa su un server.
Dopo 1000 problemi sono riuscito a fare la copia tra due cartelle del server utilizzando la libreria JCIFS ma se penso di fare la copia dall'SD al Server, mi da errore di accesso alla SD (ovviamente ho attivato 'android.permission.WRITE_EXTERNAL_STORAGE').

Ho bypassato il problema utilizzando il FileStream ma visto che su JCIFD dicono che copyTo è molto più efficiente, c'è qualcuno che mi indica come fare.

Allego il codice che NON copia:

// Copia il file dalla cartella SD sulla cartella del server
String cFile_da_copiare = "smb://" + Environment.getExternalStorageDirectory() + "/" + pNome_File;
String cFile_Destinazione = "smb://192.168.1.1/export/utente/" + "/" + pNome_File;

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, cUser, cPass);

// genera l'SMBFIle del file di origine
SmbFile fSD_File = null;
SmbFile fExp_File = null;
try {
     // Sulla SD non metto credenziali altrimenti mi da errore di accesso alla SD
     fSD_File = new SmbFile(cFile_da_copiare, "");
// qui uso l'autenticazione OK
     fExp_File = new SmbFile(cFile_Destinazione, auth);

     if (!fSD_File.exists()){
///// **** !! Qui non da errore quindi lo trova
   Log.i("OasiStore", "Esporta_Lista - File lista non strovato sulla SD");
   return null;
   }

   fSD_File.copyTo(fExp_File);
   if (!fExp_File.exists()){
//////***** Qui mi stampa il messaggio quindi non lo trova - Non l'ha copiato - Ovviamente ho visto anche sul server e non c'è
      Log.i("OasiStore", "Esporta_Lista - Lista non presente sulla destinazione: " + fExp_File.getPath());
      return null;
   }

} catch (MalformedURLException e1) {
   e1.printStackTrace();
   Log.i("OasiStore", "Esporta_Lista - URL Errore di sintassi: "+ cUrl);
} catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
//} catch (SmbException e) {
   //Log.i("OasiStore", "Esporta_Lista - Exception during copyNetworkFilesToLocal stream to output, SMP issue: " + e.getMessage());
   //e.printStackTrace();
   //return null;
}

return null;
}

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Copia di un file da android a una cartella condivisa sulla rete
« Risposta #1 il: 09 Luglio 2015, 21:56:16 CEST »
0
Chiarisco alcuni punti, non ti risolvo il problema.

I dispositivi Android non si chiamano «Palmari».

Usi un protocollo proprietario chiamato Server Message Block (SMB) utilizzato dal Common Internet File System (CIFS) implementato da una libreria esterna frutto di un reverse engineering. Questo protocollo non sarà mai presente nelle API ufficiali di Android per ovvie ragioni.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline robytlk

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Copia di un file da android a una cartella condivisa sulla rete
« Risposta #2 il: 10 Luglio 2015, 07:10:55 CEST »
0
Ti ringrazio per i chiarimenti che avevo già ben chiari ... ma accetto il tuo campanilismo

Resta di fatto che in Android non c'è modo di eseguire la copia di un file da un DISPOSITIVO su una cartella condivisa sulla rete LAN. Il che mi sembra assurdo per una sistema operativo che professa la CONDIVISIONE dei dati come uno degli obbiettivi. Tant'è che nel sistema operativo installato sui dispositivi non esiste nemmeno un "Esplora risorse" che vada a leggere la LAN e anche per questo occorre installare applicazioni esterne
L'uso della libreria esterna è consigliato e necessario proprio per ovviare a questa mancanza di Android.

O esiste qualche metodo che io non sono riuscito a trovare ?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Copia di un file da android a una cartella condivisa sulla rete
« Risposta #3 il: 10 Luglio 2015, 09:18:16 CEST »
0
Ti ringrazio per i chiarimenti che avevo già ben chiari ... ma accetto il tuo campanilismo

Resta di fatto che in Android non c'è modo di eseguire la copia di un file da un DISPOSITIVO su una cartella condivisa sulla rete LAN. Il che mi sembra assurdo per una sistema operativo che professa la CONDIVISIONE dei dati come uno degli obbiettivi. Tant'è che nel sistema operativo installato sui dispositivi non esiste nemmeno un "Esplora risorse" che vada a leggere la LAN e anche per questo occorre installare applicazioni esterne
L'uso della libreria esterna è consigliato e necessario proprio per ovviare a questa mancanza di Android.

O esiste qualche metodo che io non sono riuscito a trovare ?

Ci sono dei problemi legati alla "legalità" e al "diritto d'uso" di certe librerie e protocolli. Se per usare SMB e CIFS hai bisogno di una libreria frutto di reverse eng, questo vuol dire che non lo puoi inserire in android, senno ti arrivano avvocati a casa il giorno dopo! Nessuno ti vieta di farti le cose da solo!
Ad essere sinceri, ne mancano un sacco di app "di default", per l'nfc non c'è niente, eppure android lo ha dalla 2.3...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline robytlk

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Copia di un file da android a una cartella condivisa sulla rete
« Risposta #4 il: 10 Luglio 2015, 17:23:35 CEST »
0
E' incredibile come il mondo sia pieno di moralisti e poi in effetti la morale sta sotto terra...
Ma vorrei chiederti in merito a cosa in due avete stabilito che io faccia uso di una libreria di reverse engeenering ?

Per colmare la vostra ignoranza la libreria di cui parlo si chiama JCIFS ed è una libreria ufficiale Java ed è open source.
Poi la mia domanda aveva bisogno di una risposta tecnica se non avete la possibilità di rispondere tacete. Questo è un sito tecnico per programmatori.
Se avrò bisogno di avvocati e sacerdoti mi rivolgerò ad altre sedi.

Grazie comunque per i vostri (a questo punto) inutili commenti.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Copia di un file da android a una cartella condivisa sulla rete
« Risposta #5 il: 11 Luglio 2015, 14:26:07 CEST »
+1
E' incredibile come il mondo sia pieno di moralisti e poi in effetti la morale sta sotto terra...
Ma vorrei chiederti in merito a cosa in due avete stabilito che io faccia uso di una libreria di reverse engeenering ?

Per colmare la vostra ignoranza la libreria di cui parlo si chiama JCIFS ed è una libreria ufficiale Java ed è open source.
Poi la mia domanda aveva bisogno di una risposta tecnica se non avete la possibilità di rispondere tacete. Questo è un sito tecnico per programmatori.
Se avrò bisogno di avvocati e sacerdoti mi rivolgerò ad altre sedi.

Grazie comunque per i vostri (a questo punto) inutili commenti.

Ti ringrazio per le belle parole e per aver dimostrato che siamo 3 ignoranti, 2 tecnicamente ed uno pure maleducato. Se ti danno cosi fastidio i pareri altrui e devi attaccare chi ti dice gratuitamente ed educatamente il suo parare, puoi cercare le tue risposte altrove.

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia