// Path: app/src/main/java/tool/xfy9326/floattext/Method/ActivityMethod.java
// public class ActivityMethod {
// 
//     //文件大小格式
//     public static String formatSize(Context ctx, String target_size) {
//         if (target_size != null) {
//             return Formatter.formatFileSize(ctx, Long.valueOf(target_size));
//         } else {
//             return "0B";
//         }
//     }
// 
//     //获取后缀名
//     public static String getExtraName(String filename) {
//         if ((filename != null) && (filename.length() > 0)) {
//             int dot = filename.lastIndexOf('.');
//             if ((dot > -1) && (dot < (filename.length() - 1))) {
//                 return filename.substring(dot + 1);
//             }
//         }
//         return "No_Name";
//     }
// 
//     //包名排序
//     public static void orderPackageList(final Context ctx, List<PackageInfo> list) {
//         Collections.sort(list, new Comparator<PackageInfo>() {
//             @Override
//             public int compare(PackageInfo o1, PackageInfo o2) {
//                 String str1 = o1.applicationInfo.loadLabel(ctx.getPackageManager()).toString();
//                 String str2 = o2.applicationInfo.loadLabel(ctx.getPackageManager()).toString();
//                 return str1.compareTo(str2);
//             }
//         });
//     }
// 
//     //辅助服务是否打开
//     public static boolean isAccessibilitySettingsOn(Context context) {
//         int accessibilityEnabled = 0;
//         try {
//             accessibilityEnabled = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED);
//         } catch (Settings.SettingNotFoundException e) {
//             e.printStackTrace();
//         }
//         if (accessibilityEnabled == 1) {
//             String services = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
//             if (services != null) {
//                 return services.toLowerCase().contains(context.getPackageName().toLowerCase());
//             }
//         }
//         return false;
//     }
// 
//     //通知监听是否打开
//     public static boolean isNotificationListenerEnabled(Context ctx) {
//         String pkgName = ctx.getPackageName();
//         final String flat = Settings.Secure.getString(ctx.getContentResolver(), "enabled_notification_listeners");
//         if (!TextUtils.isEmpty(flat)) {
//             final String[] names = flat.split(":");
//             for (String name : names) {
//                 final ComponentName cn = ComponentName.unflattenFromString(name);
//                 if (cn != null) {
//                     if (TextUtils.equals(pkgName, cn.getPackageName())) {
//                         return true;
//                     }
//                 }
//             }
//         }
//         return false;
//     }
// 
//     //网络是否可用
//     public static boolean isNetworkAvailable(Context ctx) {
//         ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
//         NetworkInfo networkInfo = cm.getActiveNetworkInfo();
//         return !(networkInfo == null || !networkInfo.isAvailable());
//     }
// 
//     //获取版本名
//     public static String getVersionName(Context context) {
//         PackageInfo pinfo = getPackageInfo(context);
//         if (pinfo != null) {
//             return pinfo.versionName;
//         } else {
//             return null;
//         }
//     }
// 
//     //获取版本号
//     public static int getVersionCode(Context context) {
//         PackageInfo pinfo = getPackageInfo(context);
//         if (pinfo != null) {
//             return pinfo.versionCode;
//         } else {
//             return 0;
//         }
//     }
// 
//     private static PackageInfo getPackageInfo(Context context) {
//         try {
//             PackageManager pm = context.getPackageManager();
//             return pm.getPackageInfo(context.getPackageName(), PackageManager.GET_CONFIGURATIONS);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         return null;
//     }
// }


import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import tool.xfy9326.floattext.Method.ActivityMethod;
import tool.xfy9326.floattext.R;
        Path = file.getAbsolutePath();
        StartPath = Path;
        if (file.exists() && file.isDirectory() && file.listFiles() != null) {
            File_GetList(file);
        } else {
            Show(R.string.fileselect_defaultpath_error);
        }
    }

    private void File_GetList(File file) {
        List<File> filelist = orderByName(file);
        ArrayList<String> name = new ArrayList<>();
        ArrayList<String> data = new ArrayList<>();
        ArrayList<String> size = new ArrayList<>();
        if (filelist == null) {
            if (!Path.equalsIgnoreCase("/")) {
                size.add("");
                name.add("/...");
                data.add(file.getAbsolutePath());
            }
        } else {
            for (int i = 0; i < filelist.size(); i++) {
                if (FileType == null) {
                    size.add(filelist.get(i).isDirectory() ? "" : ActivityMethod.formatSize(this, String.valueOf(filelist.get(i).length())));
                    name.add(filelist.get(i).getName());
                    long time = filelist.get(i).lastModified();
                    String currenttime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", getResources().getConfiguration().locale).format(new Date(time));
                    data.add(currenttime);
                } else {
                    if (filelist.get(i).isDirectory() || getExtraName(filelist.get(i).getName()).equalsIgnoreCase(FileType)) {
// Path: app/src/main/java/tool/xfy9326/floattext/Method/ActivityMethod.java
// public class ActivityMethod {
// 
//     //文件大小格式
//     public static String formatSize(Context ctx, String target_size) {
//         if (target_size != null) {
//             return Formatter.formatFileSize(ctx, Long.valueOf(target_size));
//         } else {
//             return "0B";
//         }
//     }
// 
//     //获取后缀名
//     public static String getExtraName(String filename) {
//         if ((filename != null) && (filename.length() > 0)) {
//             int dot = filename.lastIndexOf('.');
//             if ((dot > -1) && (dot < (filename.length() - 1))) {
//                 return filename.substring(dot + 1);
//             }
//         }
//         return "No_Name";
//     }
// 
//     //包名排序
//     public static void orderPackageList(final Context ctx, List<PackageInfo> list) {
//         Collections.sort(list, new Comparator<PackageInfo>() {
//             @Override
//             public int compare(PackageInfo o1, PackageInfo o2) {
//                 String str1 = o1.applicationInfo.loadLabel(ctx.getPackageManager()).toString();
//                 String str2 = o2.applicationInfo.loadLabel(ctx.getPackageManager()).toString();
//                 return str1.compareTo(str2);
//             }
//         });
//     }
// 
//     //辅助服务是否打开
//     public static boolean isAccessibilitySettingsOn(Context context) {
//         int accessibilityEnabled = 0;
//         try {
//             accessibilityEnabled = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED);
//         } catch (Settings.SettingNotFoundException e) {
//             e.printStackTrace();
//         }
//         if (accessibilityEnabled == 1) {
//             String services = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
//             if (services != null) {
//                 return services.toLowerCase().contains(context.getPackageName().toLowerCase());
//             }
//         }
//         return false;
//     }
// 
//     //通知监听是否打开
//     public static boolean isNotificationListenerEnabled(Context ctx) {
//         String pkgName = ctx.getPackageName();
//         final String flat = Settings.Secure.getString(ctx.getContentResolver(), "enabled_notification_listeners");
//         if (!TextUtils.isEmpty(flat)) {
//             final String[] names = flat.split(":");
//             for (String name : names) {
//                 final ComponentName cn = ComponentName.unflattenFromString(name);
//                 if (cn != null) {
//                     if (TextUtils.equals(pkgName, cn.getPackageName())) {
//                         return true;
//                     }
//                 }
//             }
//         }
//         return false;
//     }
// 
//     //网络是否可用
//     public static boolean isNetworkAvailable(Context ctx) {
//         ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
//         NetworkInfo networkInfo = cm.getActiveNetworkInfo();
//         return !(networkInfo == null || !networkInfo.isAvailable());
//     }
// 
//     //获取版本名
//     public static String getVersionName(Context context) {
//         PackageInfo pinfo = getPackageInfo(context);
//         if (pinfo != null) {
//             return pinfo.versionName;
//         } else {
//             return null;
//         }
//     }
// 
//     //获取版本号
//     public static int getVersionCode(Context context) {
//         PackageInfo pinfo = getPackageInfo(context);
//         if (pinfo != null) {
//             return pinfo.versionCode;
//         } else {
//             return 0;
//         }
//     }
// 
//     private static PackageInfo getPackageInfo(Context context) {
//         try {
//             PackageManager pm = context.getPackageManager();
//             return pm.getPackageInfo(context.getPackageName(), PackageManager.GET_CONFIGURATIONS);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         return null;
//     }
// }


// Path: app/src/main/java/tool/xfy9326/floattext/FileSelector/FileList.java
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import tool.xfy9326.floattext.Method.ActivityMethod;
import tool.xfy9326.floattext.R;

        Path = file.getAbsolutePath();
        StartPath = Path;
        if (file.exists() && file.isDirectory() && file.listFiles() != null) {
            File_GetList(file);
        } else {
            Show(R.string.fileselect_defaultpath_error);
        }
    }

    private void File_GetList(File file) {
        List<File> filelist = orderByName(file);
        ArrayList<String> name = new ArrayList<>();
        ArrayList<String> data = new ArrayList<>();
        ArrayList<String> size = new ArrayList<>();
        if (filelist == null) {
            if (!Path.equalsIgnoreCase("/")) {
                size.add("");
                name.add("/...");
                data.add(file.getAbsolutePath());
            }
        } else {
            for (int i = 0; i < filelist.size(); i++) {
                if (FileType == null) {
                    size.add(filelist.get(i).isDirectory() ? "" : ActivityMethod.formatSize(this, String.valueOf(filelist.get(i).length())));
                    name.add(filelist.get(i).getName());
                    long time = filelist.get(i).lastModified();
                    String currenttime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", getResources().getConfiguration().locale).format(new Date(time));
                    data.add(currenttime);
                } else {
                    if (filelist.get(i).isDirectory() || getExtraName(filelist.get(i).getName()).equalsIgnoreCase(FileType)) {
                        size.add(filelist.get(i).isDirectory() ? "" : ActivityMethod.formatSize(this, String.valueOf(filelist.get(i).length())));