Androidで、ストレージ内の特定の拡張子をListに追加して、リストに表示するようにしたいです。
再帰の時、一つ上のディレクトリではなく、/sdcardを終了してしまいます。
何故でしょうか?

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private String sdPath = getExternalStoragePath();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new MyAsyncTask(this).execute(new File(sdPath));
    }



    // 外部ストレージ(SDカード)のパスを取得する。
    public static String getExternalStoragePath() {
        String path;
        // MOTOROLA 対応
        path = System.getenv("EXTERNAL_ALT_STORAGE");
        if (path != null) {
            return path;
        }
        // Samsung 対応
        path = System.getenv("EXTERNAL_STORAGE2");
        if (path != null) {
            return path;
        }
        // 旧 Samsung + 標準 対応
        path = System.getenv("EXTERNAL_STORAGE");
        if (path == null) {
            path = Environment.getExternalStorageDirectory().getPath();
        }
        // HTC 対応
        File file = new File(path + "/ext_sd");
        if (file.exists()) {
            path = file.getPath();
        }
        // その他機種
        return path;
    }
}

MyAsyncTask.java

public class MyAsyncTask extends AsyncTask<File, Void, String> {
    Context context;
    private File[] files;
    private List<String> pickedFileList = new ArrayList<String>();
    private ListView lv;

    public MyAsyncTask(Context context) {
        this.context = context;
    }

    @Override
    protected String doInBackground(File... params) {
        pickOnDir(params[0]);
        return "hoge";
    }

    public void pickOnDir(File dir) {
    files = dir.listFiles();
    if (files != null) {
        Log.d("file Info", dir.getAbsolutePath() + "を検索中...");
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
                Log.d("file Info", files[i].getAbsolutePath() + "にフォルダを確認しました");
                pickOnDir(files[i]);
            }else if (files[i].isFile()) {
                if (files[i].getName().endsWith(".js")) {
                    Log.d("file Info", files[i].getAbsolutePath() + "にJSファイルを確認しました");
                    pickedFileList.add(files[i].getAbsolutePath());
                } else {
                    Log.d("file Info", files[i].getAbsolutePath() + "にファイルを確認しました");
                }
            } else {
                Log.d("file Info", files[i].getAbsolutePath() + "は不明なファイルです");
            }
        }
        Log.d("file Info", dir.getAbsolutePath() + "の検索を完了したので戻ります");
        return;
    }
}

    @Override
    protected void onPostExecute(String results) {
        lv = (ListView) ((Activity) this.context).findViewById(R.id.listView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.context, android.R.layout.simple_expandable_list_item_1, pickedFileList);
        lv.setAdapter(adapter);
    }
}

ログ

/sdcardを検索中...
/sdcard/DCIMにフォルダを確認しました
/sdcard/DCIM/Cameraにフォルダを確認しました
/sdcard/DCIM/Cameraを検索中...
/sdcard/DCIM/Camera/XXX.jpgにファイルを確認しました
/sdcardの検索を完了したので戻ります