// Path: java/com/raidzero/teamcitydownloader/global/Debug.java
// public class Debug {
//     //private static final boolean debug = false;
//     //private static final boolean debug = true;
// 
//     private static final boolean debug = BuildConfig.DEBUG;
// 
//     public static void Log(String tag, String msg) {
//         if (debug) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void Log(String tag, String msg, Exception e) {
//         if (debug) {
//             Log.d(tag, msg);
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/FileUtility.java
// public class FileUtility {
// 
//     private static final String tag = "FileUtility";
//     public static void openFile(Context context, String fileName) {
// 
//         Debug.Log(tag, "openFile(" + fileName + ")...");
// 
//         // determine file type
//         String type = getFileMimeType(fileName);
// 
//         Intent intent = new Intent(Intent.ACTION_VIEW);
//         Uri uri = Uri.fromFile(new File(fileName));
// 
//         if (type == null) {
//             intent.setData(uri);
//         } else {
//             intent.setDataAndType(uri, type);
//         }
// 
//         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 
//         try {
//             context.startActivity(intent);
//         } catch (Exception e) {
//             DialogUtility.makeToast(context, "Unsupported file type: " + getExtensionFromFile(fileName));
//             Debug.Log(tag, "File error", e);
//         }
//     }
// 
//     public static boolean handlerExists(Context context, String filename) {
//         PackageManager pm = context.getPackageManager();
//         Intent i = new Intent(android.content.Intent.ACTION_VIEW);
// 
//         String mimeType = getFileMimeType(filename);
//         i.setDataAndType(Uri.fromFile(new File(filename)), mimeType);
//         return i.resolveActivity(pm) != null;
//     }
// 
//     public static String getExtensionFromFile(String filename) {
//         return MimeTypeMap.getFileExtensionFromUrl(filename);
//     }
// 
//     public static String getFileMimeType(String filename) {
// 
//         String ext = getExtensionFromFile(filename);
// 
//         Debug.Log(tag, "file extension: " + ext);
// 
//         MimeTypeMap mime = MimeTypeMap.getSingleton();
//         String mimeType = mime.getMimeTypeFromExtension(ext);
//         Debug.Log(tag, "returning mime type: " + mimeType);
//         return mimeType;
//     }
// 
//     public static boolean filesExist(String path) {
//         File storage = new File(path);
//         File[] files = storage.listFiles();
//         if (files != null) {
//             return files.length > 0;
//         }
// 
//         return false;
//     }
// 
//     public static int deleteAllFiles(String path) {
//         File storage = new File(path);
//         File[] files = storage.listFiles();
// 
//         int count = 0;
//         for (File f : files) {
//             f.delete();
//             count++;
//         }
// 
//         return count;
//     }
// 
//     public static void deleteFile(String path) {
//         Debug.Log(tag, "deleteFile: " + path);
//         File f = new File(path);
//         f.delete();
//     }
// 
//     public static void renameFile(String fromPath, String toPath) {
//         Debug.Log(tag, "renameFile(" + fromPath + ", " + toPath + ")");
//         File from = new File(fromPath);
//         File to = new File(toPath);
// 
//         from.renameTo(to);
//     }
// 
// }


import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import com.raidzero.teamcitydownloader.global.Debug;
import com.raidzero.teamcitydownloader.global.FileUtility;
import java.io.File;
import java.util.Date;
import java.util.List;
        }

        if (fileName.endsWith(".apk") || fileName.endsWith("APK")) {
            PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
            if(packageInfo != null) {
                ApplicationInfo appInfo = packageInfo.applicationInfo;

                appInfo.sourceDir = filePath;
                appInfo.publicSourceDir = filePath;

                Drawable icon = appInfo.loadIcon(context.getPackageManager());
                bmpIcon = ((BitmapDrawable) icon).getBitmap();

                if (bmpIcon.getByteCount() == 0) {
                    bmpIcon = ((BitmapDrawable) context.getResources().getDrawable(android.R.drawable.ic_menu_help)).getBitmap();
                }
            }
        } else {
            // get the default icon for this file type
            final Intent i = new Intent(Intent.ACTION_VIEW);
            i.setDataAndType(Uri.fromFile(f), FileUtility.getFileMimeType(fileName));

            final List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(i, 0);

            // use the first available app icon
            if (matches.size() > 0) {
                CharSequence label = matches.get(0).loadLabel(context.getPackageManager());
                Debug.Log(tag, "label: " + label);

                final Drawable icon = matches.get(0).loadIcon(context.getPackageManager());
// Path: java/com/raidzero/teamcitydownloader/global/Debug.java
// public class Debug {
//     //private static final boolean debug = false;
//     //private static final boolean debug = true;
// 
//     private static final boolean debug = BuildConfig.DEBUG;
// 
//     public static void Log(String tag, String msg) {
//         if (debug) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void Log(String tag, String msg, Exception e) {
//         if (debug) {
//             Log.d(tag, msg);
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/FileUtility.java
// public class FileUtility {
// 
//     private static final String tag = "FileUtility";
//     public static void openFile(Context context, String fileName) {
// 
//         Debug.Log(tag, "openFile(" + fileName + ")...");
// 
//         // determine file type
//         String type = getFileMimeType(fileName);
// 
//         Intent intent = new Intent(Intent.ACTION_VIEW);
//         Uri uri = Uri.fromFile(new File(fileName));
// 
//         if (type == null) {
//             intent.setData(uri);
//         } else {
//             intent.setDataAndType(uri, type);
//         }
// 
//         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 
//         try {
//             context.startActivity(intent);
//         } catch (Exception e) {
//             DialogUtility.makeToast(context, "Unsupported file type: " + getExtensionFromFile(fileName));
//             Debug.Log(tag, "File error", e);
//         }
//     }
// 
//     public static boolean handlerExists(Context context, String filename) {
//         PackageManager pm = context.getPackageManager();
//         Intent i = new Intent(android.content.Intent.ACTION_VIEW);
// 
//         String mimeType = getFileMimeType(filename);
//         i.setDataAndType(Uri.fromFile(new File(filename)), mimeType);
//         return i.resolveActivity(pm) != null;
//     }
// 
//     public static String getExtensionFromFile(String filename) {
//         return MimeTypeMap.getFileExtensionFromUrl(filename);
//     }
// 
//     public static String getFileMimeType(String filename) {
// 
//         String ext = getExtensionFromFile(filename);
// 
//         Debug.Log(tag, "file extension: " + ext);
// 
//         MimeTypeMap mime = MimeTypeMap.getSingleton();
//         String mimeType = mime.getMimeTypeFromExtension(ext);
//         Debug.Log(tag, "returning mime type: " + mimeType);
//         return mimeType;
//     }
// 
//     public static boolean filesExist(String path) {
//         File storage = new File(path);
//         File[] files = storage.listFiles();
//         if (files != null) {
//             return files.length > 0;
//         }
// 
//         return false;
//     }
// 
//     public static int deleteAllFiles(String path) {
//         File storage = new File(path);
//         File[] files = storage.listFiles();
// 
//         int count = 0;
//         for (File f : files) {
//             f.delete();
//             count++;
//         }
// 
//         return count;
//     }
// 
//     public static void deleteFile(String path) {
//         Debug.Log(tag, "deleteFile: " + path);
//         File f = new File(path);
//         f.delete();
//     }
// 
//     public static void renameFile(String fromPath, String toPath) {
//         Debug.Log(tag, "renameFile(" + fromPath + ", " + toPath + ")");
//         File from = new File(fromPath);
//         File to = new File(toPath);
// 
//         from.renameTo(to);
//     }
// 
// }


// Path: java/com/raidzero/teamcitydownloader/data/DownloadedFile.java
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import com.raidzero.teamcitydownloader.global.Debug;
import com.raidzero.teamcitydownloader.global.FileUtility;
import java.io.File;
import java.util.Date;
import java.util.List;

        }

        if (fileName.endsWith(".apk") || fileName.endsWith("APK")) {
            PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
            if(packageInfo != null) {
                ApplicationInfo appInfo = packageInfo.applicationInfo;

                appInfo.sourceDir = filePath;
                appInfo.publicSourceDir = filePath;

                Drawable icon = appInfo.loadIcon(context.getPackageManager());
                bmpIcon = ((BitmapDrawable) icon).getBitmap();

                if (bmpIcon.getByteCount() == 0) {
                    bmpIcon = ((BitmapDrawable) context.getResources().getDrawable(android.R.drawable.ic_menu_help)).getBitmap();
                }
            }
        } else {
            // get the default icon for this file type
            final Intent i = new Intent(Intent.ACTION_VIEW);
            i.setDataAndType(Uri.fromFile(f), FileUtility.getFileMimeType(fileName));

            final List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(i, 0);

            // use the first available app icon
            if (matches.size() > 0) {
                CharSequence label = matches.get(0).loadLabel(context.getPackageManager());
                Debug.Log(tag, "label: " + label);

                final Drawable icon = matches.get(0).loadIcon(context.getPackageManager());
                bmpIcon = ((BitmapDrawable) icon).getBitmap();