2012-06-23 5 views
0

Я могу получить название, версию и значок приложения, используя приведенный ниже код, но по какой-либо причине описание всегда возвращается как null. Любая помощь приветствуется.Android: applicationInfo.loadDescription() всегда возвращает null

Соответствующий код: -

List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

    for(int i=0; i < packs.size(); i++) { 
    PackageInfo p = packs.get(i); 
    // skip system apps if they shall not be included 
    if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) { 
     continue; 
    } 
    App app = new App(); 
    app.setTitle(p.applicationInfo.loadLabel(packageManager).toString()); 
    app.setPackageName(p.packageName); 
    app.setVersionName(p.versionName); 
    app.setVersionCode(p.versionCode); 
    CharSequence description = p.applicationInfo.loadDescription(packageManager); //error here? 
    app.setDescription(description != null ? description.toString() : ""); 
    apps.add(app); 
    } 

Класс App просто класс компонента, который просто устанавливает значения, приведенные в ней, больше ничего. Невозможно, чтобы ошибка была там, так как я действительно получаю «описание». то есть по какой-либо причине описание приближается к нулю.

+2

Вы уверены, что приложение (ы), с которым вы проходите, имеет описание? Большинство приложений, включая все, что я написал, НЕ имеют. Метод возвращает null, если описание не задано. – Tom

ответ

3

Кажется, что-то в порядке с вашим кодом. Ваше предположение, что любое приложение имеет описание, похоже, является «ошибкой» в этом случае. PackageManager читает что-либо из манифеста приложения. Любой разработчик приложения может предоставить ему описание. Похоже, что большинство из них (включая меня) не видят причин для этого, потому что я не знаю места, где используется это описание (помимо факта, который можно запросить через PackageManager).

Чтобы сделать это, вы можете установить приложение HelloWorld на свой телефон или эмулятор и предоставить описание внутри его манифеста. Вы должны получить его с помощью своего кода.

+0

Спасибо! Вы были правы. Просто я предположил хотя бы официальный google/samsung/etc. приложения будут иметь описание, но когда они не показывали, я предполагал, что что-то не так с моим кодом. Единственное приложение из 300, которое у меня есть, даже содержит описание Astro File Manager, вот и все. Не беспокойтесь, я думаю, это съемная функция. Еще раз спасибо за быстрый, продуманный ответ =) –

Смежные вопросы