Autore Topic: Upload file ftp app android studio problema crash  (Letto 344 volte)

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Upload file ftp app android studio problema crash
« il: 16 Aprile 2018, 15:17:53 CEST »
0
Ciao sono nuovo su questo forum e spero di aver fatto tutto per benino a livello di regolamento, allora sto impazzendo sto sviluppando un app in java da tre giorni sto sbattendo la testa su un problema da cui non riesco ad uscire.

Devo prelevare un file dal telefono che creo dalla stessa app (vedi codice) e inviarlo ad un server remoto di cui ho tutte le credennziali ho provato diverse librerie e alla fine ho optato per la commons-net-ftp-2.0.jar.  Utilizzo come da titolo android studio ed emulo l app su android 6.0 masmallow. Risultato, il file viene creato creato ed eliminato come da codice sotto nella cartella downaload, appena chiamo il metodo trasferisci file dal bottone l'app mi va in crash di seguito codice e output (ovviamente il file da inviare in una cartella specifica del server è esempio.txt):

Alla fine vorrei fare un bel tutorial dal momento che in rete non c'è una documentazione in italiano ben precisa

MAIN ACTICITY java:

Codice (Java): [Seleziona]
package com.example.mufas.bookonline;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.SocketException;

import es.dmoral.toasty.Toasty;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import static android.content.ContentValues.TAG;


public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void deleteFile(View view) {


        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        File file = new File(path, "esempio.txt");

        if (path.exists()) {
            System.out.println("Il file " + path + " esiste");
            file.delete();
            System.out.println("Il file " + path + " è stato eliminato");
            Toasty.success(getApplication(), "File elimininato", Toast.LENGTH_LONG, true).show();
        }
        // Make sure the Pictures directory exists.
        path.mkdirs();

    }

    public void newFile(View view) {

//          String path = "/Pictures/html.txt";

        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        try {
//         File file = new File(getFilesDir(),path);
            File file = new File(path, "esempio.txt");
            Toasty.success(getApplication(), "File Creato", Toast.LENGTH_LONG, true).show();
            if (file.exists()) {
                Toasty.success(getApplication(), "Il file è gia stato creato", Toast.LENGTH_LONG, true).show();
                System.out.println("Il file " + path + " esiste");
            } else if (file.createNewFile()) {
                System.out.println("Il file " + path + " è stato creato");
            } else {
                System.out.println("Il file " + path + " non può essere creato");
            }

            // Make sure the Pictures directory exists.
            path.mkdirs();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void trasferisciFile(View view) {

        FTPClient mFTP = new FTPClient();
        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        try {
            // Connect to FTP Server
            mFTP.connect(".........");
            mFTP.login("........", "..........");
            mFTP.setFileType(FTP.BINARY_FILE_TYPE);
            mFTP.enterLocalPassiveMode();


            // Prepare file to be uploaded to FTP Server
//            File file = new File("/path/to/filetotranfer");

            File file = new File(path, "esempio.txt");
            FileInputStream ifile = new FileInputStream(file);

            // Upload file to FTP Server
            mFTP.storeFile("online",ifile);
            mFTP.disconnect();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



} // fine classe main


activity_main xml:

Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/trasferisciFile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="284dp"
        android:onClick="trasferisciFile"
        android:text="INVIA FILE"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/deleteButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="215dp"
        android:onClick="deleteFile"
        android:text="CANCELLA"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/newButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="146dp"
        android:onClick="newFile"
        android:text="NEW FILE"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</RelativeLayout>


Android manifest xml:


Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mufas.bookonline">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application
        android:isolatedProcess="true"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Logcat:



Codice (Java): [Seleziona]
04-16 14:54:12.736 9364-9364/? I/art: Late-enabling -Xcheck:jni
04-16 14:54:12.872 9364-9364/com.example.mufas.bookonline W/System: ClassLoader referenced unknown path: /data/app/com.example.mufas.bookonline-2/lib/x86
04-16 14:54:13.021 9364-9364/com.example.mufas.bookonline I/ufas.bookonline: type=1400 audit(0.0:297): avc: denied { read write } for name="card0" dev="tmpfs" ino=8393 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
    type=1400 audit(0.0:298): avc: denied { open } for name="card0" dev="tmpfs" ino=8393 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
    type=1400 audit(0.0:299): avc: denied { getattr } for path="/dev/dri/card0" dev="tmpfs" ino=8393 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
04-16 14:54:13.026 9364-9378/com.example.mufas.bookonline D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-16 14:54:13.029 9364-9364/com.example.mufas.bookonline W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: unused DT entry: type 0xf arg 0x62a
04-16 14:54:13.030 9364-9364/com.example.mufas.bookonline W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: is missing DT_SONAME will use basename as a replacement: "gralloc.clovertrail.so"
04-16 14:54:13.031 9364-9364/com.example.mufas.bookonline W/linker: /system/vendor/lib/libpvr2d.so: unused DT entry: type 0xf arg 0x79b
    /system/vendor/lib/libpvr2d.so: is missing DT_SONAME will use basename as a replacement: "libpvr2d.so"
04-16 14:54:13.032 9364-9364/com.example.mufas.bookonline W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-16 14:54:13.033 9364-9364/com.example.mufas.bookonline W/linker: /system/vendor/lib/libpvr2d.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-16 14:54:13.034 9364-9364/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 24
    :0: PVRDRMOpen: TP3, ret = 25
    :0: PVRDRMOpen: TP3, ret = 25
    :0: PVRDRMOpen: TP3, ret = 25
04-16 14:54:13.085 9364-9378/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 22
04-16 14:54:13.088 9364-9378/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 29
04-16 14:54:13.089 9364-9378/com.example.mufas.bookonline I/OpenGLRenderer: Initialized EGL, version 1.4
04-16 14:54:13.089 9364-9378/com.example.mufas.bookonline W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
04-16 14:54:13.106 9364-9378/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so: unused DT entry: type 0xf arg 0x9fd
    /system/vendor/lib/libPVROCL.so: is missing DT_SONAME will use basename as a replacement: "libPVROCL.so"
04-16 14:54:13.107 9364-9378/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-16 14:54:13.173 9364-9378/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so: unused DT entry: type 0xf arg 0x2c7
    /system/vendor/lib/libglslcompiler.so: is missing DT_SONAME will use basename as a replacement: "libglslcompiler.so"
    /system/vendor/lib/libglslcompiler.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-16 14:54:15.892 9364-9364/com.example.mufas.bookonline D/AndroidRuntime: Shutting down VM
04-16 14:54:15.897 9364-9364/com.example.mufas.bookonline E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mufas.bookonline, PID: 9364
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4458)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
        at libcore.io.IoBridge.connect(IoBridge.java:122)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
        at java.net.Socket.connect(Socket.java:884)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
        at com.example.mufas.bookonline.MainActivity.trasferisciFile(MainActivity.java:92)
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

gradle app:

Codice (Java): [Seleziona]
apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.mufas.bookonline"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    implementation 'com.github.GrenderG:Toasty:1.2.8'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    implementation files('libs/commons-net-ftp-2.0.jar')
}

Premetto che programmo in java da pochissimo tempo e sono due giorni che non riesco a capire cosa sbaglio. Grazie a tutti per il prezioso aiuto, se vorrete darmelo.
« Ultima modifica: 16 Aprile 2018, 15:27:06 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #1 il: 16 Aprile 2018, 17:27:16 CEST »
0
Ciao,
secondo la documentazione che trovi qui non è detto che il percorso che provi a prendere con "getExternalStoragePublicDirectory()" esista sul device, dovreti controllarne l'esistenza prima. Forse è per quello che va in errore (in effetti nel logcat hai un denied read/write). Se ti serve solo un percorso di appoggio per piazzare il file prima di inviarlo via FTP, puoi usare Context.getExternalFilesDir(); dal tuo punto di vista non credo cambi molto, e penso non avrai gli stessi problemi.

Inoltre, se il problema è legato all'istruzione che ti ho evidenziato, l'app va in crash perchè l'istruzione è al di fuori del try/catch, spostala dentro così la puoi intercettare.

Il tuo codice, per quanto riguarda il problema del crash, diventa quindi da così:
Codice (Java): [Seleziona]
    public void trasferisciFile(View view) {

        FTPClient mFTP = new FTPClient();
        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        try {
            // Connect to FTP Server
            mFTP.connect(".........");
            mFTP.login("........", "..........");
            mFTP.setFileType(FTP.BINARY_FILE_TYPE);
            mFTP.enterLocalPassiveMode();


            // Prepare file to be uploaded to FTP Server
//            File file = new File("/path/to/filetotranfer");

            File file = new File(path, "esempio.txt");
            FileInputStream ifile = new FileInputStream(file);

            // Upload file to FTP Server
            mFTP.storeFile("online",ifile);
            mFTP.disconnect();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

a così:

Codice (Java): [Seleziona]
    public void trasferisciFile(View view) {

        try {
            FTPClient mFTP = new FTPClient();
            File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

            // Connect to FTP Server
            mFTP.connect(".........");
            mFTP.login("........", "..........");
            mFTP.setFileType(FTP.BINARY_FILE_TYPE);
            mFTP.enterLocalPassiveMode();


            // Prepare file to be uploaded to FTP Server
//            File file = new File("/path/to/filetotranfer");

            File file = new File(path, "esempio.txt");
            FileInputStream ifile = new FileInputStream(file);

            // Upload file to FTP Server
            mFTP.storeFile("online",ifile);
            mFTP.disconnect();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
Ciao
P
« Ultima modifica: 16 Aprile 2018, 17:29:41 CEST da berpao »

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #2 il: 17 Aprile 2018, 05:41:39 CEST »
0
Ciao Berpao inntanto grazie per il tuo aiuto, purtoppo ho fatto come mi hai suggerito e l'app continua ad andare in crash, come da te suggerito ho verificato che il file si trovi nella destinazione ed effettivamente è presente, mi serve leggere la cartella Download perchè alla fine della fiera, il file che devo spedire in ftp, non sarà quello creato ma un file csv creato da un'altra app, che appunto lo salva in Download per default.

Di seguito ti posto il codice come da te gentilmente suggerito (ho aggiunto un controllo sulla path) ed effettivamente, mi hai messo la pulce per quanto riguarda la presenza del file, e mi sono accorto che forse viene letto un percorso diverso cioè non assoluto. Guarda il logat ti ho evidenziato la riga in questione:

Metodo TrasferisciFile() :

Codice (Java): [Seleziona]
try {

            FTPClient mFTP = new FTPClient();

//            File path = Environment.getExternalStoragePublicDirectory(
 //                   Environment.DIRECTORY_DOWNLOADS);
           File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);


            if (path != null) {

                System.out.println("Il percorso " + path + " è stato letto");
                // Connect to FTP Server
                mFTP.connect(".............");
                mFTP.login(".................", "................");
                mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                mFTP.enterLocalPassiveMode();

            }
                // Prepare file to be uploaded to FTP Server

                File file = new File(path, "esempio.txt");

                if (file != null) {

                    System.out.println("Il file " + file + " esiste");
                } else {

                    System.out.println("Il file " + file + "non esiste");

                }


                FileInputStream ifile = new FileInputStream(path);

                // Upload file to FTP Server
                mFTP.storeFile("online", ifile);
                Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();


            mFTP.disconnect();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



} // fine classe main


LOGAT:

04-17 05:26:38.722 11615-11615/com.example.mufas.bookonline I/System.out: Il percorso /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download è stato letto

Codice (Java): [Seleziona]
04-17 05:26:36.514 11615-11615/? I/art: Late-enabling -Xcheck:jni
04-17 05:26:36.573 11615-11622/? I/art: Debugger is no longer active
04-17 05:26:36.660 11615-11615/? W/System: ClassLoader referenced unknown path: /data/app/com.example.mufas.bookonline-1/lib/x86
04-17 05:26:36.725 11615-11629/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-17 05:26:36.728 11615-11615/? W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: unused DT entry: type 0xf arg 0x62a
    /system/vendor/lib/hw/gralloc.clovertrail.so: is missing DT_SONAME will use basename as a replacement: "gralloc.clovertrail.so"
04-17 05:26:36.730 11615-11615/? W/linker: /system/vendor/lib/libpvr2d.so: unused DT entry: type 0xf arg 0x79b
    /system/vendor/lib/libpvr2d.so: is missing DT_SONAME will use basename as a replacement: "libpvr2d.so"
04-17 05:26:36.731 11615-11615/? W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 05:26:36.732 11615-11615/? W/linker: /system/vendor/lib/libpvr2d.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 05:26:36.733 11615-11615/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 23
04-17 05:26:36.735 11615-11615/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 24
    :0: PVRDRMOpen: TP3, ret = 24
    :0: PVRDRMOpen: TP3, ret = 24
04-17 05:26:36.775 11615-11629/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 21
04-17 05:26:36.778 11615-11629/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 28
04-17 05:26:36.778 11615-11629/? I/OpenGLRenderer: Initialized EGL, version 1.4
04-17 05:26:36.778 11615-11629/? W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
04-17 05:26:36.785 11615-11629/? W/linker: /system/vendor/lib/libPVROCL.so: unused DT entry: type 0xf arg 0x9fd
    /system/vendor/lib/libPVROCL.so: is missing DT_SONAME will use basename as a replacement: "libPVROCL.so"
    /system/vendor/lib/libPVROCL.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 05:26:36.849 11615-11629/? W/linker: /system/vendor/lib/libglslcompiler.so: unused DT entry: type 0xf arg 0x2c7
    /system/vendor/lib/libglslcompiler.so: is missing DT_SONAME will use basename as a replacement: "libglslcompiler.so"
    /system/vendor/lib/libglslcompiler.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 05:26:38.722 11615-11615/com.example.mufas.bookonline I/System.out: Il percorso /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download è stato letto
04-17 05:26:38.723 11615-11615/com.example.mufas.bookonline D/AndroidRuntime: Shutting down VM
04-17 05:26:38.724 11615-11615/com.example.mufas.bookonline E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mufas.bookonline, PID: 11615
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4458)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
        at libcore.io.IoBridge.connect(IoBridge.java:122)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
        at java.net.Socket.connect(Socket.java:884)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
        at com.example.mufas.bookonline.MainActivity.trasferisciFile(MainActivity.java:98)
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Se così fosse questo potrebbe essere il motivo per cui l'app si arresta in maniera anomala e spiegherebbe anche il denied read/write che ne pensi?

Se si come posso specificare il percorso assoluto del file Downaload? Ho anche trovato questa discussione in merito:

https://stackoverflow.com/questions/5453708/android-how-to-use-environment-getexternalstoragedirectory


Ma il percorso rimane cmq : /storage/emulated/0/Download

Grazie ancora per il prezioso supporto.
« Ultima modifica: 17 Aprile 2018, 05:44:26 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #3 il: 17 Aprile 2018, 08:12:59 CEST »
0
Ciao,
adesso ho dato un occhio meglio al logcat e all'errore che hai postato (era meglio farlo fin da subito mi sa  O:-)); mi sa che il problema è che provi a fare la connessione al sito FTP nel main thread che non si può fare (dovresti usare un background thread).
 In effetti qui ti evidenzio l'errore che ricevi

Codice (Java): [Seleziona]
04-17 05:26:38.724 11615-11615/com.example.mufas.bookonline E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mufas.bookonline, PID: 11615
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4458)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
        at libcore.io.IoBridge.connect(IoBridge.java:122)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
        at java.net.Socket.connect(Socket.java:884)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
        at com.example.mufas.bookonline.MainActivity.trasferisciFile(MainActivity.java:98)
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
        at android.view.View.performClick(View.java:5204)
        at android.view.View$PerformClick.run(View.java:21153)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

E come vedi dallo stack trace alla fine hai un "android.os.NetworkOnMainThreadException". Guarda qui la documentazione per maggiori info a riguardo.

Puoi risolvere velocemente eseguendo il codice in un altro thread (codice preso da S.O.):

Codice (Java): [Seleziona]
Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {
        try  {
            //Your code goes here
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

thread.start();

oppure implementare un asynctask (soluzione un po' più lunga ma più pulita, fai riferimento sempre al post di S.O che ti ho linkato o guarda la documentazione qui)

Credo che il nocciolo del problema sia qui
Fammi sapere
Ciao
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #4 il: 17 Aprile 2018, 13:01:57 CEST »
0
Allora ho fatto una cosa del genere magari ho sbagliato non avendolo mai fatto

Codice (Java): [Seleziona]
 public void trasferisciFile(View view) {

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try {

                    FTPClient mFTP = new FTPClient();

//            File path = Environment.getExternalStoragePublicDirectory(
                    //                   Environment.DIRECTORY_DOWNLOADS);

                    File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);


                    if (path != null) {

                        System.out.println("Il percorso " + path + " è stato letto");
                        // Connect to FTP Server
                        mFTP.connect("..........");
                        mFTP.login(".............", ".................");
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();


                        // Prepare file to be uploaded to FTP Server

                        File file = new File(path, "esempio.txt");

                        FileInputStream ifile = new FileInputStream(path);

                        // Upload file to FTP Server
                        mFTP.storeFile("online", ifile);
                        Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();


                        mFTP.disconnect();

                    }

                } catch (SocketException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

        thread.start();


    }

Effettivamente  l app non va più in crash, potresti spiegarmi meglio a cosa serve effettivamente seguire questo Thread e quali le sono le sue funzioni o caratteristiche che non ho ben capito?

Questo il logcat:

Codice (Java): [Seleziona]
04-17 13:15:16.817 7010-7010/? I/art: Late-enabling -Xcheck:jni
04-17 13:15:16.906 7010-7016/? I/art: Debugger is no longer active
04-17 13:15:17.082 7010-7010/? W/System: ClassLoader referenced unknown path: /data/app/com.example.mufas.bookonline-1/lib/x86
04-17 13:15:17.835 7010-7010/? I/ufas.bookonline: type=1400 audit(0.0:197): avc: denied { open } for name="card0" dev="tmpfs" ino=205 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
    type=1400 audit(0.0:198): avc: denied { getattr } for path="/dev/dri/card0" dev="tmpfs" ino=205 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
04-17 13:15:17.828 7010-7033/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-17 13:15:17.833 7010-7010/? W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: unused DT entry: type 0xf arg 0x62a
04-17 13:15:17.846 7010-7010/? W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: is missing DT_SONAME will use basename as a replacement: "gralloc.clovertrail.so"
04-17 13:15:17.847 7010-7010/? W/linker: /system/vendor/lib/libpvr2d.so: unused DT entry: type 0xf arg 0x79b
    /system/vendor/lib/libpvr2d.so: is missing DT_SONAME will use basename as a replacement: "libpvr2d.so"
04-17 13:15:17.848 7010-7010/? W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
    /system/vendor/lib/libpvr2d.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 13:15:17.849 7010-7010/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 23
    :0: PVRDRMOpen: TP3, ret = 24
04-17 13:15:17.850 7010-7010/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 24
    :0: PVRDRMOpen: TP3, ret = 24
04-17 13:15:17.929 7010-7033/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 28
04-17 13:15:17.932 7010-7033/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 29
04-17 13:15:17.932 7010-7033/com.example.mufas.bookonline I/OpenGLRenderer: Initialized EGL, version 1.4
04-17 13:15:17.932 7010-7033/com.example.mufas.bookonline W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
04-17 13:15:17.935 7010-7033/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so: unused DT entry: type 0xf arg 0x9fd
    /system/vendor/lib/libPVROCL.so: is missing DT_SONAME will use basename as a replacement: "libPVROCL.so"
04-17 13:15:17.936 7010-7033/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 13:15:18.006 7010-7033/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so: unused DT entry: type 0xf arg 0x2c7
    /system/vendor/lib/libglslcompiler.so: is missing DT_SONAME will use basename as a replacement: "libglslcompiler.so"
    /system/vendor/lib/libglslcompiler.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 13:18:02.955 7010-7124/com.example.mufas.bookonline I/System.out: Il percorso /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download è stato letto
04-17 13:18:08.687 7010-7124/com.example.mufas.bookonline W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download: open failed: EISDIR (Is a directory)
04-17 13:18:08.690 7010-7124/com.example.mufas.bookonline W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
        at java.io.FileInputStream.<init>(FileInputStream.java:76)
        at com.example.mufas.bookonline.MainActivity$1.run(MainActivity.java:112)
        at java.lang.Thread.run(Thread.java:818)
    Caused by: android.system.ErrnoException: open failed: EISDIR (Is a directory)
04-17 13:18:08.691 7010-7124/com.example.mufas.bookonline W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:442)
        ... 3 more

Il file non viene comunque trasferito e mi esce l'errore che vedinel logat, ora la buona notizia è che credo che la connessione stia avvenendo correttamente, o almeno spero.

Quindi credo proprio che la cnnessione avvenga correttamente, non rimane che riuscire a fare un upload.

Grazie infinitamente...
« Ultima modifica: 17 Aprile 2018, 13:46:16 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #5 il: 17 Aprile 2018, 13:52:56 CEST »
0
Ciao,
Citazione
Effettivamente  l app non va più in crash, potresti spiegarmi meglio a cosa serve effettivamente seguire questo Thread e quali le sono le sue funzioni o caratteristiche che non ho ben capito?
Ottimo. Cerco di fartela semplice: quando un'app parte, tutto gli elementi di interfaccia vengono costruiti in un thread specifico (main thread o Ui thread). Per evitare che operazioni lunghe, come può essere una network operation (download file, conmnessioni a socket, ecc), blocchino l'app e la rendano inutilizzabile provocando il classico errore ANR (App Not Responding), queste operazioni devono essere eseguite in un thread secondario (chiamato normalmente background thread). Il framework android fornisce poi degli strumenti per eseguire da un thread secondario del codice sul main thread (in modo da poter aggiornare la UI quando l'operazione si è conclusa), vedi questo link dove ti propone i principali.

Per quanto riguarda il problema invece, nel log cat hai un messaggio abbastanza preciso che è "java.io.FileNotFoundException"

Citazione
04-17 13:18:02.955 7010-7124/com.example.mufas.bookonline I/System.out: Il percorso /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download è stato letto
04-17 13:18:08.687 7010-7124/com.example.mufas.bookonline W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download: open failed: EISDIR (Is a directory)
04-17 13:18:08.690 7010-7124/com.example.mufas.bookonline W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
        at java.io.FileInputStream.<init>(FileInputStream.java:76)
        at com.example.mufas.bookonline.MainActivity$1.run(MainActivity.java:112)
        at java.lang.Thread.run(Thread.java:818)
    Caused by: android.system.ErrnoException: open failed: EISDIR (Is a directory)
04-17 13:18:08.691 7010-7124/com.example.mufas.bookonline W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:442)
Secondo me c'è ancora qualche problema con il perrcorso del file, dal messaggio sembra che hai provato ad accedere ad un file che in realtà è una directory. Prova a fare un debug, ma secondo me il problema potrebbe essere questa istruzione

Codice (Java): [Seleziona]
FileInputStream ifile = new FileInputStream(path);
dove passi la variabile "path" (che + solo una cartella) anzichè la viariabile "file" (cheè effettivamente il tuo file esempio.txt)
Ciao e fammi sapere
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #6 il: 17 Aprile 2018, 15:42:48 CEST »
0
No mi sono perso qualcosa non mi torna, nel metodo crea ed elimina ho richiamato il medesimo file con la stessa istruzione e tutto funziona, ad ogni modo ho provato a passare la variabile file come da tuo suggerimento questo il solito codice e relativo logat:

Codice (Java): [Seleziona]
            FTPClient mFTP = new FTPClient();


  //         File path = Environment.getExternalStoragePublicDirectory(
  //                 Environment.DIRECTORY_DOWNLOADS);

                File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);

                        // Connect to FTP Server
                        mFTP.connect("........");
                        mFTP.login("......", ".........");
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();


                        // Prepare file to be uploaded to FTP Server

                        File file = new File("/esempio.txt");

                    System.out.println(" sono pronto a trasferire da questo percorso" + path + file);

                        FileInputStream ifile = new FileInputStream(file);


                        // Upload file to FTP Server
          mFTP.storeFile("online", ifile);
          Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();


                        mFTP.disconnect();


                } catch (SocketException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

        thread.start();


    }

Codice (Java): [Seleziona]
04-17 15:39:03.007 6202-6202/? I/art: Late-enabling -Xcheck:jni
04-17 15:39:03.085 6202-6202/? W/ActivityThread: Application com.example.mufas.bookonline is waiting for the debugger on port 8100...
04-17 15:39:03.086 6202-6202/? I/System.out: Sending WAIT chunk
04-17 15:39:04.361 6202-6208/com.example.mufas.bookonline I/art: Debugger is active
04-17 15:39:04.489 6202-6202/com.example.mufas.bookonline I/System.out: Debugger has connected
    waiting for debugger to settle...
04-17 15:39:04.690 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:04.890 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:05.091 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:05.291 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:05.491 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:05.692 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:05.892 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:06.092 6202-6202/com.example.mufas.bookonline I/System.out: waiting for debugger to settle...
04-17 15:39:06.293 6202-6202/com.example.mufas.bookonline I/System.out: debugger has settled (1485)
04-17 15:39:06.301 6202-6202/com.example.mufas.bookonline W/System: ClassLoader referenced unknown path: /data/app/com.example.mufas.bookonline-1/lib/x86
04-17 15:39:06.549 6202-6202/com.example.mufas.bookonline I/ufas.bookonline: type=1400 audit(0.0:258): avc: denied { execmod } for path="/system/vendor/lib/hw/gralloc.clovertrail.so" dev="mmcblk0p8" ino=1712 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:system_file:s0 tclass=file permissive=1
04-17 15:39:06.527 6202-6293/com.example.mufas.bookonline D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-17 15:39:06.552 6202-6202/com.example.mufas.bookonline W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: unused DT entry: type 0xf arg 0x62a
    /system/vendor/lib/hw/gralloc.clovertrail.so: is missing DT_SONAME will use basename as a replacement: "gralloc.clovertrail.so"
04-17 15:39:06.554 6202-6202/com.example.mufas.bookonline W/linker: /system/vendor/lib/libpvr2d.so: unused DT entry: type 0xf arg 0x79b
    /system/vendor/lib/libpvr2d.so: is missing DT_SONAME will use basename as a replacement: "libpvr2d.so"
04-17 15:39:06.556 6202-6202/com.example.mufas.bookonline W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 15:39:06.557 6202-6202/com.example.mufas.bookonline W/linker: /system/vendor/lib/libpvr2d.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 15:39:06.557 6202-6202/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 24
04-17 15:39:06.558 6202-6202/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 25
    :0: PVRDRMOpen: TP3, ret = 25
    :0: PVRDRMOpen: TP3, ret = 25
04-17 15:39:06.628 6202-6293/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 22
04-17 15:39:06.630 6202-6293/com.example.mufas.bookonline E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 29
04-17 15:39:06.631 6202-6293/com.example.mufas.bookonline I/OpenGLRenderer: Initialized EGL, version 1.4
04-17 15:39:06.631 6202-6293/com.example.mufas.bookonline W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
04-17 15:39:06.634 6202-6293/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so: unused DT entry: type 0xf arg 0x9fd
    /system/vendor/lib/libPVROCL.so: is missing DT_SONAME will use basename as a replacement: "libPVROCL.so"
04-17 15:39:06.635 6202-6293/com.example.mufas.bookonline W/linker: /system/vendor/lib/libPVROCL.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 15:39:06.718 6202-6293/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so: unused DT entry: type 0xf arg 0x2c7
    /system/vendor/lib/libglslcompiler.so: is missing DT_SONAME will use basename as a replacement: "libglslcompiler.so"
04-17 15:39:06.719 6202-6293/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 15:39:14.618 6202-6320/com.example.mufas.bookonline I/System.out:  sono pronto a trasferire da questo percorso/storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download
04-17 15:39:14.621 6202-6320/com.example.mufas.bookonline W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download/esempio.txt: open failed: ENOENT (No such file or directory)
04-17 15:39:14.623 6202-6320/com.example.mufas.bookonline W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
04-17 15:39:14.624 6202-6320/com.example.mufas.bookonline W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:76)
        at com.example.mufas.bookonline.MainActivity$1.run(MainActivity.java:110)
        at java.lang.Thread.run(Thread.java:818)
    Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
04-17 15:39:14.625 6202-6320/com.example.mufas.bookonline W/System.err:     at libcore.io.Posix.open(Native Method)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
        at libcore.io.IoBridge.open(IoBridge.java:438)
        ... 3 more

Non capisco cosa sto sbagliando?

Ciao,Ottimo. Cerco di fartela semplice: quando un'app parte, tutto gli elementi di interfaccia vengono costruiti in un thread specifico (main thread o Ui thread). Per evitare che operazioni lunghe, come può essere una network operation (download file, conmnessioni a socket, ecc), blocchino l'app e la rendano inutilizzabile provocando il classico errore ANR (App Not Responding), queste operazioni devono essere eseguite in un thread secondario (chiamato normalmente background thread). Il framework android fornisce poi degli strumenti per eseguire da un thread secondario del codice sul main thread (in modo da poter aggiornare la UI quando l'operazione si è conclusa), vedi questo link dove ti propone i principali.

Per quanto riguarda il problema invece, nel log cat hai un messaggio abbastanza preciso che è "java.io.FileNotFoundException"
Secondo me c'è ancora qualche problema con il perrcorso del file, dal messaggio sembra che hai provato ad accedere ad un file che in realtà è una directory. Prova a fare un debug, ma secondo me il problema potrebbe essere questa istruzione

Codice (Java): [Seleziona]
FileInputStream ifile = new FileInputStream(path);
dove passi la variabile "path" (che + solo una cartella) anzichè la viariabile "file" (cheè effettivamente il tuo file esempio.txt)
Ciao e fammi sapere
P
« Ultima modifica: 17 Aprile 2018, 16:56:06 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #7 il: 17 Aprile 2018, 17:27:56 CEST »
0
Ciao, forse mi sono spiegato male, perchè hai modificato questa istruzione

Codice (Java): [Seleziona]
File file = new File(path, "esempio.txt");
in questo modo?

Codice (Java): [Seleziona]
File file = new File("/esempio.txt");
Facendo così hai cambiato totalmente il path del file...
Facciamo un po' di ordine:

Codice (Java): [Seleziona]
....
                        // Connect to FTP Server
                        mFTP.connect("........");
                        mFTP.login("......", ".........");
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();

                        File file = new File(path, "esempio.txt");
                        if (file.exists()) {
                             FileInputStream ifile = new FileInputStream(file);        
                             mFTP.storeFile("online", ifile);
                             .....                  
                        }

Tieni presente queste cose:
1) Ho scritto il codice al volo, non ho avuto modo di creare un progetto e testarlo, quindi verifica eventuali errori di scrittura/sintassi
2) mi sembra di aver capito dal codice che il file viene generato in un altro momento, credo dalla funzione "public void newFile(View view)". Non te l'ho scritto ma ho dato per scontato che il percorso in cui veine generato il file da questa funzione DEVE combaciare con quello della funzione "trasferisciFile()", quindi anche in "newFile(View view)" e in "deleteFile(View view)" dovrai sostituire
Codice (Java): [Seleziona]
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
con

Codice (Java): [Seleziona]
File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
altrimenti crei il file in un percorso e poi lo vai a cercare in un altro...
L'errore continua ad essere FileNotFoundException quindi è per forza un problema di percorso file. Al max, se non ne vieni fuori, riposta di nuovo tutto il codice della activity (solo codice java, non il file xml) così provo a creare un progetto e fare un debug più approfondito
Fammi sapere
Ciao
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #8 il: 17 Aprile 2018, 19:25:54 CEST »
0
OK ora ho capito perchè non ci stiamo capendo, scusami sicuramente sono io che mi sono spiegato male, anzi grazie davvero sei preziosissimo vedrai che alla fine tirerremo giu un gran bel tutorial, che fidati l'argomento è delicato mi sembra di capire, facciamo ordine:

- Ho un app my library (non la mia un altra) che salva un file csv in una cartella Download (attenzione salva in memoria interna /Download e non Android/data/com.example/mufas/bookonline/Download) risultato della modifica che mi ha suggerito nel post precedente.

- Dalla cartella Download del dispositivo devo quindi prelevare il file che poi spedisco in ftp via server per aggiornare un catalogo libri online con prestashop (andrà nella cartella import per farti capire e il catalogo si aggiornerà in automatico)

Detto ciò ho creato una funzione scrivi ed elimina per comodità, ma sono obbligato a prelevare questo file da storage/Download ad ogni modo ho provato cmq a editare con le tue istruzioni modificando questo

Codice (Java): [Seleziona]
File path = Environment.getExternalStoragePublicDirectory(
               Environment.DIRECTORY_DOWNLOADS);

con questo

Codice (Java): [Seleziona]
File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
nei metodi crea() elimina() e trasferisci()

Risultato, ricomincia il crash e il logat è questo :

Codice (Java): [Seleziona]
04-17 18:58:55.385 5036-5051/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so: unused DT entry: type 0xf arg 0x2c7
    /system/vendor/lib/libglslcompiler.so: is missing DT_SONAME will use basename as a replacement: "libglslcompiler.so"
04-17 18:58:55.386 5036-5051/com.example.mufas.bookonline W/linker: /system/vendor/lib/libglslcompiler.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-17 18:58:56.918 5036-5036/com.example.mufas.bookonline I/Choreographer: Skipped 92 frames!  The application may be doing too much work on its main thread.
04-17 18:59:14.826 5036-5036/com.example.mufas.bookonline I/Choreographer: Skipped 42 frames!  The application may be doing too much work on its main thread.
04-17 18:59:49.073 5036-5036/com.example.mufas.bookonline I/System.out: Il file /storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download è stato creato
04-17 19:01:49.245 5036-6833/com.example.mufas.bookonline I/System.out:  sono pronto a trasferire da questo percorso/storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download/storage/emulated/0/Android/data/com.example.mufas.bookonline/files/Download/esempio.txt
04-17 19:01:49.309 5036-6833/com.example.mufas.bookonline E/AndroidRuntime: FATAL EXCEPTION: Thread-247
    Process: com.example.mufas.bookonline, PID: 5036
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
        at android.os.Handler.<init>(Handler.java:200)
        at android.os.Handler.<init>(Handler.java:114)
        at android.widget.Toast$TN.<init>(Toast.java:345)
        at android.widget.Toast.<init>(Toast.java:101)
        at android.widget.Toast.makeText(Toast.java:259)
        at es.dmoral.toasty.Toasty.custom(Toasty.java:171)
        at es.dmoral.toasty.Toasty.success(Toasty.java:132)
        at com.example.mufas.bookonline.MainActivity$1.run(MainActivity.java:114)
        at java.lang.Thread.run(Thread.java:818)
04-17 19:01:53.820 5036-6833/com.example.mufas.bookonline I/Process: Sending signal. PID: 5036 SIG: 9

Ora, ripartendo da dove abbiamo lasciato, e sperando di averti fatto capire bene la situazione, trasferisci deve prendere necessariamente il file così come viene salvato dalla funzione crea(); ripeto sarà il percorso del file csv che verrà salvato dall'altra app.

Quello che non capisco è perche quello che funziona in crea() ed alimina :

Codice (Java): [Seleziona]
 
........

File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        File file = new File(path, "esempio.txt");

.......

Non funzioni anche su trasferisciFile() . Detto questo ti riposto l'intero codice java così come dovrebbe essere per le funzioni crea() ed alimina che altrimenti con le tue modifiche salvano in altro percorso che non va bene. Non ti posto il manifest ma attenzione che ci sono permessi da abilitare affinchè tutto funzioni se li vuoi te li giro.

Codice (Java): [Seleziona]
package com.example.mufas.bookonline;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.SocketException;

import es.dmoral.toasty.Toasty;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import static android.content.ContentValues.TAG;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void deleteFile(View view) {


        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        File file = new File(path, "esempio.txt");

        if (path.exists()) {
            System.out.println("Il file " + path + " esiste");
            file.delete();
            System.out.println("Il file " + path + " è stato eliminato");
            Toasty.success(getApplication(), "File elimininato", Toast.LENGTH_LONG, true).show();
        }
        // Make sure the Pictures directory exists.
        path.mkdirs();

    }

    public void newFile(View view) {

//          String path = "/Pictures/html.txt";

        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

        try {
//         File file = new File(getFilesDir(),path);
            File file = new File(path, "esempio.txt");
            Toasty.success(getApplication(), "File Creato", Toast.LENGTH_LONG, true).show();
            if (file.exists()) {
                Toasty.success(getApplication(), "Il file è gia stato creato", Toast.LENGTH_LONG, true).show();
                System.out.println("Il file " + path + " esiste");
            } else if (file.createNewFile()) {
                System.out.println("Il file " + path + " è stato creato");
            } else {
                System.out.println("Il file " + path + " non può essere creato");
            }

            // Make sure the Download directory exists.
            path.mkdirs();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void trasferisciFile(View view) {

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try {

            FTPClient mFTP = new FTPClient();


          File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS);

//                File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);

                        // Connect to FTP Server
                        mFTP.connect(".....................");
                        mFTP.login(".....................", ".......................");
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();


                        // Prepare file to be uploaded to FTP Server

                        File file = new File(path, "esempio.txt");

                    System.out.println(" sono pronto a trasferire da questo percorso" + path + file);

                        FileInputStream ifile = new FileInputStream(file);


                        // Upload file to FTP Server
          mFTP.storeFile("online", ifile);
          Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();


                        mFTP.disconnect();


                } catch (SocketException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

        thread.start();


    }

} // fine classe main

Per meglio intenderci non mi serve un percorso di appoggio, ma devo tarsferire per forza dalla cartella  in cui attualmente lavorano i metodi crea ed elimina() che ti consiglio di lanciare per meglio comprendere il tutto e che ho già accuratamente testato. Grazie ancora di tutto sei gentilissimo e molto disponibile e skippa pure il tutto se ti ho stufato, lo capisco non mi offendo;) . Abbi pazienza con i novellini devi andarci piano :)
« Ultima modifica: 17 Aprile 2018, 19:32:01 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #9 il: 18 Aprile 2018, 09:04:02 CEST »
+1
Ciao, forse ci siamo.
Citazione
OK ora ho capito perchè non ci stiamo capendo, scusami sicuramente sono io che mi sono spiegato male, anzi grazie davvero sei preziosissimo vedrai che alla fine tirerremo giu un gran bel tutorial, che fidati l'argomento è delicato mi sembra di capire, facciamo ordine:

- Ho un app my library (non la mia un altra) che salva un file csv in una cartella Download (attenzione salva in memoria interna /Download e non Android/data/com.example/mufas/bookonline/Download) risultato della modifica che mi ha suggerito nel post precedente.
No problem per il capirsi, infatti non avevo colto questa cosa e il codice nel metodo newFile() mi aveva tratto in inganno (ad un certo punto fai un "file.createNewFile()")

Cmq tornando al problema in questione, ho creato il progetto per poterlo debuggare e ti posso dire:

1) L'errore non è più quello di prima, adesso hai un errore diverso. In effetti facendo il debug i percorsi dei file sembrano coerenti (leggi e scrivi nelle stesse posizioni e cioè "/storage/sdcard/Download/esempio.txt"

2) L'errore è legato al toast che provi a fare. Come ti avevo detto non puoi aggiornare la UI da un background thread, che è quello che stai provando a fare con l'istruzione

Codice (Java): [Seleziona]
....
Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();
....

Io credo che se commenti tutti i "Tosty" o cambi la chiamata del tosty in questa maniera:

Codice (Java): [Seleziona]
....
                    // Upload file to FTP Server
                    mFTP.storeFile("online", ifile);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();
                        }
                    });
                    mFTP.disconnect();

 all'interno della procedura "trasferisciFile()" diovresti riuscire a fare il giro completo

Citazione
Grazie ancora di tutto sei gentilissimo e molto disponibile e skippa pure il tutto se ti ho stufato, lo capisco non mi offendo;) .
Vai tranquillo siamo qui per questo motivo
Fammi sapere
Ciao
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #10 il: 18 Aprile 2018, 12:50:00 CEST »
0
Grandeeee.... Ora l'app mi restituisce il messaggio File Trasferito appena la lancio e premo invia file, credo sia un buon segno, secondo il codice così modficato:

Codice (Java): [Seleziona]
 public void trasferisciFile(View view) {

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try {

            FTPClient mFTP = new FTPClient();


          File path = Environment.getExternalStoragePublicDirectory(
                  Environment.DIRECTORY_DOWNLOADS);

 //               File path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);

                        // Connect to FTP Server
                        mFTP.connect("............", 21);
                        mFTP.login(".................", "................");
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();


                        // Prepare file to be uploaded to FTP Server

                        File file = new File(path, "esempio.txt");

//                    System.out.println(" sono pronto a trasferire da questo percorso" + path + file);

                        FileInputStream ifile = new FileInputStream(file);


                        // Upload file to FTP Server
          mFTP.storeFile("online", ifile);

                        mFTP.disconnect();

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toasty.success(getApplication(), "Il file è stato trasferito", Toast.LENGTH_LONG, true).show();
                        }
                    });

                } catch (SocketException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

        thread.start();


    }

Il problema è che se vado a verificare nel server remoto con filezilla il file non c'è

Ho inoltre verficato che:

- Le credenziali accesso ftp siano corrette
- Il file sul telefono esista
- La cartella di destinazione online in remoto esista
- Modificato i permessi della cartella online in 777 per accesso in scrittura e lettura

-Ho anche provato ad inserire queste due istuzioni:

Codice (Java): [Seleziona]
.....

 // Connect to FTP Server
                        mFTP.connect(".............", 21);
                        mFTP.login("........", "");
                        //mFTP.setFileType(FTP.BINARY_FILE_TYPE);

                        mFTP.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
                        mFTP.setFileTransferMode(FTP.BINARY_FILE_TYPE);
                       
                        mFTP.enterLocalPassiveMode();

.......

Mi chiedo se sto settando bene questi parametri, la documentazione net.commons ftp è un pò un casino, almeno per me :)

Il Logat invece tace....

Hai qualche idea a riguardo? Tu hai provato a trasferire il file e verificare effettivamente sia stato creato?

Grazie ancora di tutto, il tutorial si avvicina.
« Ultima modifica: 18 Aprile 2018, 13:41:12 CEST da mufasaonline »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #11 il: 18 Aprile 2018, 13:40:43 CEST »
0
Ciao,

Citazione
Tu hai provato a trasferire il file e verificare effettivamente sia stato creato?

non ho potuto provare non avendo le credenziali e non ho un server FTP su cui provare...

Citazione
La documentazione net.commons ftp è un pò un casino, almeno per me :)
Mah, provo a dargli un occhio, ma non ti assicuro niente a riguardo... tolti gli errori nel codice, quello che succede è tutta opera della libreria FTp... le uniche cose che mi vengono in mente sono blocchi dal punto di vista della rete (firewall o quant'altro) ma ti dovrebbe restituire cmq un qualche errore... oppure potrebbe esser il fatto che stai usando l'emulatore, non so se tutte le funzionalità di rete nell'emulatore sono attive e funzionanti... Prova ad installare l'app su un device fisico e a trasferire da lì.
Fammi sapere
Ciao
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #12 il: 18 Aprile 2018, 13:46:42 CEST »
0
Provato ora a installare l app su device mi dice file trasferito ma il file fisico sul server non c'è.....  > :( > :( > :(

Post unito: 18 Aprile 2018, 14:19:21 CEST
Ho provato anche ad installare la libreria aggiornata commons-net-ftp 3.6 latest version:

https://commons.apache.org/proper/commons-net/download_net.cgi

arghhhhhhhh

« Ultima modifica: 18 Aprile 2018, 14:19:21 CEST da mufasaonline, Reason: Merged DoublePost »

Offline berpao

  • Utente normale
  • ***
  • Post: 162
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Upload file ftp app android studio problema crash
« Risposta #13 il: 18 Aprile 2018, 14:48:08 CEST »
0
Cioa, ho dato un occhio veloce alla documentazione e la prima cosa che mi balza all'occhio è che in questa chiamata:

Codice (Java): [Seleziona]
mFTP.storeFile("online", ifile);
il primo parametro passato è il nome con cui il file verrà salvato sul server; non è che la mancanza di estensione dal file crea qualche problema? so per certo che i server FTP possono filtrare i file in modo da non permettere l'upload di file "non sicuri". Prova a mettere l'estensione ".txt" nel comando e vediamo se cambia qualcosa.

Inoltre io aggiungerei qualche interrogazione al server FTP per vedere se sei realmente connesso o no, per esempio:

Codice (Java): [Seleziona]
...
                        // Connect to FTP Server
                        mFTP.connect("............", 21);
                        System.out.print(mFTP.getReplyString());
                        mFTP.login(".................", "................");
                        System.out.print(mFTP.getReplyString());
                        FTPFile[] files = mFTP.listFiles(directory);

Sono solo dei test che ho preso dal sito dell'FTp, puoi modificarli come credi. Lo scopo è
1) verificare che sei realmente connesso al seerver ftp
2) se sei connesso, verificare in quale cartella sei entrato (magari stai cercando il file nel percorso sbagliato e devi cambiare cartella di lavoro con un comando)

Inoltre per il ommento, a meno che non siano necessarie, io queste istruzioni le commenterei:

Codice (Java): [Seleziona]
                        mFTP.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTP.enterLocalPassiveMode();

Fammi sapere
Ciao
P

Offline mufasaonline

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab 3
  • Sistema operativo:
    windows 10
Re:Upload file ftp app android studio problema crash
« Risposta #14 il: 18 Aprile 2018, 14:59:09 CEST »
0
A questo punto la domanda quindi è: come faccio a puntare ad una cartella specifica del server? Ora me lo mette in root e a me serve inviarlo ad un percorso specifico? Perdonami per la confusione che ti posso aver creato che tonno che sono  :-) :-) :-) :-)
« Ultima modifica: 18 Aprile 2018, 15:07:59 CEST da mufasaonline »