package com.turingtechnologies.materialscrollbardemo;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class AppData {
private static List<ApplicationInfo> pkgAppsList;
static ArrayList<String> pkgLabelList = new ArrayList<>();
static ArrayList<Drawable> pkgIconList = new ArrayList<>();
static ArrayList<Long> pkgDateList = new ArrayList<>();
static void processApps(final AppCompatActivity activity){
if(!pkgLabelList.isEmpty()){
openMainActivity(activity);
return;
}
//noinspection WrongConstant
pkgAppsList = activity.getPackageManager().getInstalledApplications(PackageManager.GET_ACTIVITIES);
for(int i = 0; i < pkgAppsList.size(); i++){
if(activity.getPackageManager().getLaunchIntentForPackage(pkgAppsList.get(i).packageName) == null || (!BuildConfig.DEBUG && pkgAppsList.get(i).packageName.contains(AppData.class.getPackage().getName()))){
pkgAppsList.remove(i);
i--;
}
}
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
Collections.sort(pkgAppsList, new Comparator<ApplicationInfo>() {
@Override
public int compare(ApplicationInfo o1, ApplicationInfo o2) {
return o1.loadLabel(activity.getPackageManager()).toString().compareToIgnoreCase(o2.loadLabel(activity.getPackageManager()).toString());
}
});
for(ApplicationInfo appInfo : pkgAppsList){
pkgLabelList.add(appInfo.loadLabel(activity.getPackageManager()).toString());
pkgIconList.add(appInfo.loadIcon(activity.getPackageManager()));
try {
pkgDateList.add(activity.getPackageManager().getPackageInfo(appInfo.packageName, 0).firstInstallTime);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
pkgAppsList = null;
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
openMainActivity(activity);
}
}.execute();
}
private static void openMainActivity(AppCompatActivity activity){
Intent main = new Intent(activity.getApplicationContext(), MainActivity.class);
activity.startActivity(main);
}
}