Как да получите списък с всички инсталирани приложения на Android
В този урок ще научим как да получите списък с всички инсталирани приложения на Android. Но искам да започна с малък преглед на едно полезно приложение - нарича се Hexlock и ви позволява да блокирате достъпа до избрани приложения на вашето устройство с помощта на парола или шаблон. Вече чувам вашите неодобрителни възклицания, но не бързайте да си тръгвате - в хода на прегледа ще ви разкажа една история, свързана с това приложение.
Така че получаването на списък с всички приложения за Android, инсталирани на устройство, е полезно, когато разработвате приложение за споделяне на apk файлове с други устройства или когато разработвате шкафче за приложения като това, което ви показах в началото на урока.
Разгледайте кода за просто приложение, което ви позволява да направите това. Оформлението на основния клас съдържа ListView, второто оформление съдържа маркирането на елемента от списъка. Използва се от адаптера за представяне на информация за приложението. Показва иконата на приложението, името на приложението и пакета на приложението.
Класът MainActivity наследява от ListActivity. Това е основният клас, който се използва за инициализиране на списъка с инсталирани приложения.
Класът PackageManager се използва за получаване на информация за пакетите на приложения, които в момента са инсталирани на устройството. Можете да получите екземпляр на класа PackageManager, като използвате метода getPackageManager(). PackageManager предоставя методи за заявка за инсталирани пакети и свързани разрешения и т.н. В този пример получаваме списък с инсталирани приложения в Android.
Тъй като получаването на списъка с приложения от PackageManager е дълга задача, това се прави в AsyncTask.
Методът packageManager.getInstalledApplications() връща списък с всички пакети на приложения,които са инсталирани на устройството. Флагът GET_META_DATA ви позволява да извличате всякакви метаданни, свързани с разрешенията. Ако зададем флага GET_UNINSTALLED_PACKAGES, ще бъде върнат списък с всички приложения, включително тези, които са били изтрити с атрибута DONT_DELETE_DATA, т.е. частично изтрити, а след тях имаше папки с данни.
Освен това този клас използва listadapter, който е обект на потребителския клас AppAdapter за ListView. Той ще наследи от ArrayAdapter.
Тук декларираме списък, контекст и пакетен мениджър.
В метода getView изграждаме елемента списък. Получаваме LayoutInflater, използвайки контекстния метод getSystemService(Class), за да запълним оформлението.
След това в основния клас в метода onPostExecute показваме списъка. Методът setListAdapter предоставя курсор за списъчен изглед. Входът е списък адаптер.
Ето как работи този малък пример, изброявайки всички инсталирани приложения, показвайки иконата, името на приложението и името на пакета.