put directories and files in the same list + permission handling

This commit is contained in:
tibbi
2016-07-12 23:17:37 +02:00
parent e9c7154a7e
commit d9c043a787
6 changed files with 106 additions and 43 deletions

View File

@ -1,12 +1,15 @@
package com.simplemobiletools.filemanager.activities;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import com.simplemobiletools.filemanager.R;
import com.simplemobiletools.filemanager.Utils;
import com.simplemobiletools.filemanager.models.Directory;
import com.simplemobiletools.filemanager.models.FileDirItem;
import java.io.File;
import java.util.ArrayList;
@ -14,27 +17,57 @@ import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int STORAGE_PERMISSION = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Directory> dirs = getDirectories();
Collections.sort(dirs);
}
private List<Directory> getDirectories() {
final List<Directory> dirs = new ArrayList<>();
@Override
protected void onResume() {
super.onResume();
tryInitFileManager();
}
private void tryInitFileManager() {
if (Utils.hasStoragePermission(getApplicationContext())) {
initializeFileManager();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION);
}
}
private void initializeFileManager() {
List<FileDirItem> items = getItems();
Collections.sort(items);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == STORAGE_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initializeFileManager();
} else {
Utils.showToast(getApplicationContext(), R.string.no_permissions);
finish();
}
}
}
private List<FileDirItem> getItems() {
final List<FileDirItem> items = new ArrayList<>();
final String path = Environment.getExternalStorageDirectory().toString();
final File root = new File(path);
File[] files = root.listFiles();
for (File file : files) {
if (file.isDirectory()) {
final String dirPath = file.getAbsolutePath();
final String dirName = Utils.getFilename(dirPath);
dirs.add(new Directory(dirPath, dirName));
}
final String curPath = file.getAbsolutePath();
final String curName = Utils.getFilename(curPath);
items.add(new FileDirItem(curPath, curName, file.isDirectory()));
}
return dirs;
return items;
}
}