Как запускать системные приложения программно или как отфильтровать запускаемые системные приложения?

Хочу составить список установленных и системных приложений. системные приложения — предустановленные приложения (приложения, которые устанавливаются на момент изготовления). Для этого я классифицировал все приложения, используя (ApplicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0, которые являются системными приложениями, а другие - установленными приложениями. Теперь моя проблема в том, что я хочу запускать эти приложения по щелчку элементов списка. Но я не мог запускать системные приложения, такие как Контакты, Звонилка и т. Д.

Как запускать системные приложения программно или как отфильтровать запускаемые системные приложения?


person Devu Soman    schedule 13.03.2013    source источник
comment
проверьте эту ссылку stackoverflow.com/questions/6382659/ есть аналогичный вопрос   -  person Syn3sthete    schedule 13.03.2013
comment
У меня установлены и системные приложения. Я хочу знать, можно ли запускать системные приложения с помощью намерения?   -  person Devu Soman    schedule 13.03.2013


Ответы (1)


Я не мог найти точного ответа. Но я думаю, что это будет полезно

List<PackageInfo> list = packageManager.getInstalledPackages(0);
for (PackageInfo pi : list) {
 try {
    ApplicationInfo appInfo = getPackageManager() .getApplicationInfo(pi.packageName, 0);
        //check whether the app is launchable or not
    if (packageManager .getLaunchIntentForPackage(appInfo.packageName) != null) {
     //check whether the app is an installed / system app
     if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        //system apps.........
     } else {
        //installed apps............
     }
    }

   } catch (Exception e) {}
}
person Devu Soman    schedule 13.03.2013