|
|
@ -1,10 +1,15 @@
|
|
|
|
package com.thankvinci.CloudKey.Fragment;
|
|
|
|
package com.thankvinci.CloudKey.Fragment;
|
|
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
|
|
|
import android.os.Environment;
|
|
|
|
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.View;
|
|
|
|
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.Toast;
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
@ -18,27 +23,48 @@ import com.thankvinci.CloudKey.R;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.File;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Stack;
|
|
|
|
|
|
|
|
|
|
|
|
public class FileManageFragment extends Fragment {
|
|
|
|
public class FileManageFragment extends Fragment {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String dir; //当前fragment加载的目录
|
|
|
|
|
|
|
|
private boolean isRoot; //是否是根目录布局
|
|
|
|
|
|
|
|
|
|
|
|
private EditText path_edit;
|
|
|
|
private EditText path_edit;
|
|
|
|
private RecyclerView directoryView;
|
|
|
|
private RecyclerView directoryView;
|
|
|
|
private List<FileItem> fileItemList = new ArrayList<>();
|
|
|
|
private List<FileItem> fileItemList;
|
|
|
|
private String fileNames[];
|
|
|
|
private String fileNames[];
|
|
|
|
private File files[];
|
|
|
|
private File files[];
|
|
|
|
|
|
|
|
|
|
|
|
public FileManageFragment(){
|
|
|
|
public FileManageFragment(){
|
|
|
|
super(R.layout.filemanage_fragment);
|
|
|
|
super(R.layout.filemanage_fragment);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onViewCreated(View view,Bundle savedInstanceState) {
|
|
|
|
public void onViewCreated(View view,Bundle savedInstanceState) {
|
|
|
|
super.onViewCreated(view, savedInstanceState);
|
|
|
|
super.onViewCreated(view, savedInstanceState);
|
|
|
|
path_edit = getView().findViewById(R.id.path_name);
|
|
|
|
path_edit = getView().findViewById(R.id.path_name);
|
|
|
|
directoryView = (RecyclerView)getView().findViewById(R.id.dir_list);
|
|
|
|
directoryView = (RecyclerView)getView().findViewById(R.id.dir_list);
|
|
|
|
loadRoot();
|
|
|
|
|
|
|
|
|
|
|
|
Bundle data = getArguments();
|
|
|
|
|
|
|
|
dir = data.getString("dir");
|
|
|
|
|
|
|
|
isRoot = data.getBoolean("isRoot");
|
|
|
|
|
|
|
|
Toast.makeText(getActivity(),dir+isRoot,Toast.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
if(isRoot){
|
|
|
|
|
|
|
|
loadRoot();
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
loadDirectory(dir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
initLayout();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getDir(){
|
|
|
|
|
|
|
|
return dir;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void initLayout(){
|
|
|
|
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL);
|
|
|
|
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL);
|
|
|
|
directoryView.setLayoutManager(layoutManager);
|
|
|
|
directoryView.setLayoutManager(layoutManager);
|
|
|
|
FileAdapter adapter = new FileAdapter(fileItemList);
|
|
|
|
FileAdapter adapter = FileAdapter.getInstance(fileItemList,this);
|
|
|
|
|
|
|
|
adapter.setFileList(fileItemList);
|
|
|
|
directoryView.setAdapter(adapter);
|
|
|
|
directoryView.setAdapter(adapter);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void loadRoot() {
|
|
|
|
private void loadRoot() {
|
|
|
@ -46,25 +72,39 @@ public class FileManageFragment extends Fragment {
|
|
|
|
ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限
|
|
|
|
ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限
|
|
|
|
"android.permission.WRITE_EXTERNAL_STORAGE",
|
|
|
|
"android.permission.WRITE_EXTERNAL_STORAGE",
|
|
|
|
"android.permission.READ_EXTERNAL_STORAGE"}, 1);
|
|
|
|
"android.permission.READ_EXTERNAL_STORAGE"}, 1);
|
|
|
|
//File root = getActivity().getExternalFilesDir(null);
|
|
|
|
|
|
|
|
//File root = new File(Environment.getExternalStorageState());
|
|
|
|
String rootPath = Environment.getExternalStorageDirectory().getPath();
|
|
|
|
File root = new File("/storage/emulated/0");
|
|
|
|
dir = rootPath;
|
|
|
|
Toast.makeText(getActivity(),root.getAbsolutePath()+"",Toast.LENGTH_SHORT).show();
|
|
|
|
path_edit.setText(dir);
|
|
|
|
Toast.makeText(getActivity(),root.canRead()+"",Toast.LENGTH_SHORT).show();
|
|
|
|
File root = new File(rootPath);
|
|
|
|
files = root.listFiles();
|
|
|
|
files = root.listFiles();
|
|
|
|
FileUtils.orderByName(files);
|
|
|
|
if (files == null){
|
|
|
|
path_edit.setText("/storage/emulated/0");
|
|
|
|
//当目录里为空时,列表为空对象
|
|
|
|
initDirectory();
|
|
|
|
}else{
|
|
|
|
|
|
|
|
FileUtils.orderByName(files);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
initDirectory();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void loadDirectory(String path){
|
|
|
|
public void loadDirectory(String path){
|
|
|
|
ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限
|
|
|
|
ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限
|
|
|
|
"android.permission.WRITE_EXTERNAL_STORAGE",
|
|
|
|
"android.permission.WRITE_EXTERNAL_STORAGE",
|
|
|
|
"android.permission.READ_EXTERNAL_STORAGE"}, 1);
|
|
|
|
"android.permission.READ_EXTERNAL_STORAGE"}, 1);
|
|
|
|
|
|
|
|
path_edit.setText(path);
|
|
|
|
File directory = new File(path);
|
|
|
|
File directory = new File(path);
|
|
|
|
Toast.makeText(getActivity(),directory.getAbsolutePath()+"",Toast.LENGTH_SHORT).show();
|
|
|
|
files = directory.listFiles();
|
|
|
|
initDirectory();
|
|
|
|
if (files == null){
|
|
|
|
|
|
|
|
//当目录里为空时,列表为空对象
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
FileUtils.orderByName(files);
|
|
|
|
|
|
|
|
initDirectory();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Toast.makeText(getActivity(),directory.canRead()+"",Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void initDirectory(){
|
|
|
|
private void initDirectory(){
|
|
|
|
|
|
|
|
fileItemList = null;
|
|
|
|
|
|
|
|
fileItemList = new ArrayList<>();
|
|
|
|
String filename,suffix;
|
|
|
|
String filename,suffix;
|
|
|
|
boolean isFile,isZip;
|
|
|
|
boolean isFile,isZip;
|
|
|
|
int lastIndex,index;
|
|
|
|
int lastIndex,index;
|
|
|
@ -90,8 +130,6 @@ public class FileManageFragment extends Fragment {
|
|
|
|
if(index != 0){ //隐藏.开头的隐藏文件
|
|
|
|
if(index != 0){ //隐藏.开头的隐藏文件
|
|
|
|
FileItem fitem = new FileItem(filename,isFile,isZip);
|
|
|
|
FileItem fitem = new FileItem(filename,isFile,isZip);
|
|
|
|
fileItemList.add(fitem);
|
|
|
|
fileItemList.add(fitem);
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|