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

Я сделал небольшой способ отображения имени установленного приложения в android. Но когда я даю атрибут «имя», он показывает ошибку исключения. И когда я даю "packageName", метод отлично выполняется и отображает имя пакета в списке.

private void getInstalledApps() {
    // TODO Auto-generated method stub
     PackageManager packageManager=this.getPackageManager();
        List<ApplicationInfo applist=packageManager.getInstalledApplications(0);


        Iterator<ApplicationInfo> it=applist.iterator();
        while(it.hasNext()){
            ApplicationInfo pk=(ApplicationInfo)it.next();

            String appname=pk.name.toString();

            installedapplist.add(appname);
        }

}

В приведенном выше коде, когда я даю String appname=pk.packageName.toString(), он работает нормально, но когда я даю String appname=pk.name.toString(), программа выдает ошибку исключения. Пожалуйста, помогите мне разобраться с проблемой.


person Unnikrishnan    schedule 27.07.2011    source источник


Ответы (2)


Я предполагаю, что ваш код генерирует исключение NullPointerException, потому что поле name равно null. В любом случае, вы, вероятно, хотите:

String appname = packageManager.getApplicationLabel(pk).toString()
person Ted Hopp    schedule 27.07.2011
comment
Спасибо. Именно то, что я искал. - person user3734429; 01.10.2015
comment
@charlag_khan - Вы имеете в виду pk.name? Вероятно, потому что в манифесте не объявлен атрибут android:name. Это имя используется только тогда, когда приложению необходимо определить собственный подкласс Application. - person Ted Hopp; 09.04.2017

с помощью этого вы можете получить установленные имена пакетов приложений и имена приложений

List<PackageInfo> packageInfos=getPackageManager().getInstalledPackages(0);
for (PackageInfo packageInfo:packageInfos)
{
        Log.d(TAG,"packageName "+packageInfo.packageName);
        Log.d(TAG,"appname "+getPackageManager().getApplicationLabel(packageInfo.applicationInfo));
}
person Sai Gopi Me    schedule 23.08.2017