2013-06-09 2 views
1

У меня есть приложение Blackberry. Он загружается с веб-страницы, которая обеспечивает динамическое содержимое JAD-файла. JSP печатает те:Нулевые значения при чтении пользовательских атрибутов JAD

out.println("Appid: " + appid); 
out.println("Ip: " + user.getIp()); 
out.println("Servicename: " + service); 
out.println("MIDlet-Version: 1.0.0"); 
out.println("MIDlet-Jar-URL: MyApp.jar"); 
out.println("MIDlet-Jar-Size: 91633"); 
out.println("MicroEdition-Profile: MIDP-2.0"); 
    (and other attributes goes on like that..) 

Мне нужно, чтобы мои пользовательские атрибуты, как «APPID», но иногда получает нулевые значения. Пользователь может загружать и запускать приложение, но некоторые из них не могут получить мои пользовательские атрибуты. Я не знаю, речь идет о модели телефона или текущем состоянии операционной системы, но по моим бревнам, эта проблема возникает в основном на этих устройствах:

9800 с OS 6.0.0.546

9300 с OS 6.0.0.570

9300 с OS 6.0.0.668

9320 с OS 7.1.0.398

Мой код, чтобы получить атрибуты:

CodeModuleGroup cmg = null; 
    CodeModuleGroup[] allGroups = CodeModuleGroupManager.loadAll(); 
    String moduleName = ApplicationDescriptor 
      .currentApplicationDescriptor().getModuleName(); 

    for (int i = 0; i < allGroups.length; i++) { 
     if (allGroups[i].containsModule(moduleName)) { 
      cmg = allGroups[i]; 
      break; 
     } 
    } 

    if (cmg != null) { 

     AppData.firstPageURL = cmg.getProperty("Firstpage"); 

     AppData.appId = cmg.getProperty("Appid"); 
     AppData.firstIp = cmg.getProperty("Ip"); 
     AppData.firstSubServiceName = cmg.getProperty("Servicename"); 

     for (Enumeration e = cmg.getPropertyNames(); e.hasMoreElements();) { 

      String name = (String) e.nextElement(); 
      String value = cmg.getProperty(name); 
      AppData.errorStep += "-" + name + ":" + value + "-"; 
     } 
    } 

Кстати, я решил, что код в цикле for выше никогда не запускается в этих случаях.

Любая идея?

ответ

0

Иногда ApplicationDescriptor.currentApplicationDescriptor().getModuleName() дает имя файла трека трека вместо основного файла трески. Итак, если ваше имя модуля MyApp, функция может вернуть MyApp-1.

Чтобы решить эту проблему, вы должны удалить номер после дефиса.

String moduleName = ApplicationDescriptor.currentApplicationDescriptor() 
     .getModuleName(); 
if(moduleName.indexOf('-') > 0) { 
    moduleName = moduleName.substring(0, moduleName.indexOf('-'); 
} 
+0

Я все еще вижу тот же результат. Я проверяю нулевые случаи и вижу, что в переменной moduleName нет символа «-». Возможно ли, что это мои имена атрибутов? возможно, я должен назвать такие имена, как RIM-APPID, RIM-IP и т. д.? – ftb

+0

нет решения? Мне действительно нужна помощь – ftb

+0

Вы сказали, что он не входит в цикл for. О каком цикле For вы говорите, первый или второй? – adwiv

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