2012-09-14 43 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的
  • 細節信息涉及使用它們
  • 提供代碼,您可以適應努力的味道到自己的無線應用的需求

...

上面的教程還列出了一些資源,推薦在部分進一步研究欲瞭解更多信息