2012-09-14 47 views
-1

我目前正在开发一个J2ME应用程序事件管理器。我正在使用PIM,但我对此没有足够的了解。有人可以帮我或给我参考如何设置显示,编辑和删除记录吗?J2ME PIM事件

这是我迄今为止所做的。

 import javax.microedition.midlet.MIDlet; 
     import javax.microedition.lcdui.Displayable; 
     import javax.microedition.lcdui.Display; 
     import javax.microedition.lcdui.Form; 
     import javax.microedition.lcdui.CommandListener; 
     import javax.microedition.lcdui.TextField; 
     import javax.microedition.lcdui.DateField; 
     import javax.microedition.lcdui.Command; 
     import javax.microedition.lcdui.Alert; 

     import javax.microedition.pim.PIM; 
     import javax.microedition.pim.PIMItem; 
     import javax.microedition.pim.EventList; 
     import javax.microedition.pim.Event; 
     import javax.microedition.pim.PIMException; 

     import java.util.Date; 


     public class AddCalendarEvent extends MIDlet implements CommandListener { 

      private Display display; 
      private Form addEventForm; 
      private Command cmdAddEvent; 
      private Command cmdExit; 
      private TextField summaryField; 
      private DateField startDateField; 
      private DateField endDateField; 
      private TextField noteField; 
      private TextField locationField; 

      public AddCalendarEvent() { 
       if(checkPIMSupport() == false) { 
        exitMIDlet(); 
       } 

       initializeComponents(); 
      } 

      public void initializeComponents() { 
       display = Display.getDisplay(this); 
       addEventForm = new Form("Add event"); 
       cmdAddEvent = new Command("Add event", Command.SCREEN, 0); 
       addEventForm.addCommand(cmdAddEvent); 

       cmdExit = new Command("Exit", Command.EXIT, 0); 
       addEventForm.addCommand(cmdExit); 

       addEventForm.setCommandListener(this);   

       try { 
        EventList eventList = (EventList)PIM.getInstance().openPIMList(
          PIM.EVENT_LIST, PIM.READ_WRITE); 
        if(eventList.isSupportedField(Event.SUMMARY) == true) { 
         summaryField = new TextField("Summary", null, 20, 
                TextField.ANY); 
         addEventForm.append(summaryField); 
        } else { 
         eventList.close(); 
         throw new Exception("Summary field is not supported"); 
        } 

        if(eventList.isSupportedField(Event.START) == true) { 
         startDateField = new DateField("Start date", 
                DateField.DATE_TIME); 
         startDateField.setDate(new Date()); 
         addEventForm.append(startDateField); 
        } 

        if(eventList.isSupportedField(Event.END) == true) { 
         endDateField = new DateField("End date", DateField.DATE_TIME); 
         endDateField.setDate(new Date()); 
         addEventForm.append(endDateField); 
        } 

        if(eventList.isSupportedField(Event.NOTE) == true) { 
         noteField = new TextField("Note", null, 20, TextField.ANY); 
         addEventForm.append(noteField); 
        } 

        if(eventList.isSupportedField(Event.LOCATION) == true) { 
         locationField = new TextField("Location", null, 20, 
                TextField.ANY); 
         addEventForm.append(locationField); 
        }    

        eventList.close(); 

       } catch(PIMException pimExc) { 
       } 
       catch(SecurityException secExc) { 

       } 
       catch(Exception exc) { 

        exitMIDlet(); 
       } 
      } 

      private boolean checkPIMSupport() { 
       String propValue = System.getProperty("microedition.pim.version"); 
       if(propValue != null) { 
        return true; 
       } else { 
        return false; 
       } 
      } 

      private void addEvent() { 
       try { 
        EventList eventList = (EventList)PIM.getInstance().openPIMList(
          PIM.EVENT_LIST, PIM.READ_WRITE);    

        Event event = eventList.createEvent(); 

        if(eventList.isSupportedField(Event.SUMMARY) == true) { 
         String summary = summaryField.getString(); 
         event.addString(Event.SUMMARY, PIMItem.ATTR_NONE, summary); 
        } else { 
         eventList.close(); 
         throw new Exception("Summary field for event is not supported"); 
        } 

        if(eventList.isSupportedField(Event.START) == true) { 
         long startDate = startDateField.getDate().getTime(); 
         event.addDate(Event.START, PIMItem.ATTR_NONE, startDate); 
        } 

        if(eventList.isSupportedField(Event.END) == true) { 
         long endDate = endDateField.getDate().getTime(); 
         event.addDate(Event.END, PIMItem.ATTR_NONE, endDate); 
        } 

        if(eventList.isSupportedField(Event.NOTE) == true) { 
         String note = noteField.getString(); 
         event.addString(Event.NOTE, PIMItem.ATTR_NONE, note); 
        } 

        if(eventList.isSupportedField(Event.LOCATION) == true) { 
         String location = locationField.getString(); 
         event.addString(Event.LOCATION, PIMItem.ATTR_NONE, location); 
        }  

        event.commit(); 
        eventList.close(); 

        showAlert("Info", "Event was successfully added."); 

       } catch(PIMException pimExc) { 
        showAlert("PIMException", pimExc.getMessage()); 
       } 
       catch(SecurityException secExc) { 
        showAlert("SecurityException", secExc.getMessage()); 
       } 
       catch(Exception exc) { 
        showAlert("Exception", exc.getMessage()); 
       } 
      } 

      private void showAlert(String title, String message) { 
       Alert alert = new Alert(title); 
       alert.setString(message); 
       alert.setTimeout(Alert.FOREVER); 
       display.setCurrent(alert); 
      } 

      public void startApp() { 
       display.setCurrent(addEventForm); 
      } 

      public void pauseApp() { 
      } 
      public void destroyApp(boolean unconditional) { 
      } 

      private void exitMIDlet() { 
       notifyDestroyed(); 
      } 

      public void commandAction(Command command, Displayable displayable) { 
       if(command == cmdAddEvent) { 
        addEvent(); 
       } 

       if(command == cmdExit) { 
        exitMIDlet(); 
       } 
      } 
     } 
+0

究竟是什么问题? – gnat

+0

我在pim中显示,编辑和删除数据时出现问题。没有任何参考。 – drayl

+2

这里有对** [jsr75标记wiki](http://stackoverflow.com/tags/jsr75/info“here”)提供的规范和教程的引用** - 就像“PIM API入门”一样。你检查过这些吗? – gnat

回答

4

研究jsr75 tag wiki中建议的规范和教程。

这一个看起来像最佳匹配您的问题:Getting Started With the PIM APIs

...这篇文章提供了一个代码密集的入门教程的PIM API的;它:

  • 介绍JSR 75
  • 介绍了javax.microedition.pim可选包
  • 提供有关PIM API的
  • 细节信息涉及使用它们
  • 提供代码,您可以适应努力的味道到自己的无线应用的需求

...

上面的教程还列出了一些资源,推荐在部分进一步研究欲了解更多信息