Есть ли способ извлечь объект ApplicationInfo из PackageManager? Я пробовал много разных типов методов для достижения этой цели, но безрезультатно. В настоящее время я работаю над экраном запуска Android по умолчанию (Application Drawer) и хотел бы получить информацию о пакете конкретно из имени пакета. Это не на уровне приложения, а на уровне сборки приложения Launcher2, источника. Версия Android, с которой я работаю, - 2.3.3.
Вот что я пробовал:
ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);
Ошибка:
Type mismatch: cannot convert from android.content.pm.ApplicationInfo to com.android.launcher2.ApplicationInfo
Это не для получения текущего запущенного пакета, а для ВСЕХ приложений на самом телефоне.
Я обнаружил, что:
pack.getApplicationInfo(packageName, flags)
Не возвращает тот же объект ApplicationInfo, что и ApplicationInfo, переданный в функцию ниже в AllApps2D.java:
.
public void addApps(ArrayList<ApplicationInfo> list)
Я пытаюсь извлечь объект ApplicationInfo из самого пакета, используя только имя.
Данная функция находится ниже, как показано в открытом исходном коде AllApps2D.java (папка Launcher2)
private ArrayList<ApplicationInfo> mAllAppsList = new ArrayList<ApplicationInfo>();
public void addApps(ArrayList<ApplicationInfo> list) {
final int N = list.size();
for (int i=0; i<N; i++) {
final ApplicationInfo item = list.get(i);
int index = Collections.binarySearch(mAllAppsList, item,
LauncherModel.APP_NAME_COMPARATOR);
if (index < 0) {
index = -(index+1);
}
mAllAppsList.add(index, item);
}
mAppsAdapter.notifyDataSetChanged();
}
UPDATE
По сути, я пытаюсь изменить порядок расположения значков в программе запуска в произвольном порядке. Было бы идеально, если бы я мог получить необходимую для этого информацию через PackageManager.
Для того, что я реализовал для работы, я должен иметь возможность вытащить ЖЕ
Объект ApplicationInfo, который использует код AllApps2D, который, по-видимому:
com.android.Launcher2.ApplicationInfo
Что не совпадает с тем, что возвращается:
ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);
что составляет:
android.content.pm.ApplicationInfo
Код, доступный для модуля запуска, и класс, с которым я работаю, найден здесь .
Ни один из этих методов не работает WITH * приложение launcher2 в сборке Android. Есть еще предложения?