返回顶部
首页 > 资讯 > 前端开发 > html >如何理解J2ME PIM的概念
  • 415
分享到

如何理解J2ME PIM的概念

2024-04-02 19:04:59 415人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。这里和大家分享一下J2ME PIM的概念,根据jsR

这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

这里和大家分享一下J2ME PIM的概念,根据jsR75的定义,Personal InfORMation Management(PIM)api提供了一种访问移动设备上的本地个人数据的方法,这些数据包括Contacts数据、Tasks数据和Appointments数据等等。

J2ME PIM概论

根据JSR75的定义,Personal Information Management(PIM)API提供了一种访问移动设备上的本地个人数据的方法,这些数据包括Contacts数据、Tasks数据和Appointments数据等等。在本文中,我们将仔细审视这个API,讨论有关PIM MIDlet的开发安全和部署问题,并比较PIM和另一个J2MEAPI——RecordManagementStore(RMS)。

移动环境中的Personal Information Management(PIM)

随着新设备不断上市,在移动设备上提供AddressBook、Calendar和TaskList成为了一项必然的要求。J2ME应用程序也需要访问这些数据。可选包JSR75 Personal Information Management(PIM)提供了这个功能。

它不仅允许访问包含联系人、约会和任务的本地个人信息,还允许访问基于附加到设备上的SIM卡和Local and Remote Personal Information数据库的信息。

PIM包支持从vCard和vCalendar导入和导出数据,vCard和vCalendar分别是AddressBook和Calendar的Internet标准格式。它还拥有阻止未授权类检索个人信息的安全特性。

另一个可选包JSR75 File Connection提供一种访问本文探讨范围之外的本地文件系统的方法。

J2ME PIM包

Java PIM包通过javax.microedition.pim包表示。

这个包定义的重要接口包括:

Contact——这个接口表示AddressBook上的单个联系人。

ContactList——这个接口表示AddressBook,这是一个Contact列表。

Event——这个接口表示单个CalendarEvent。

EventList——这个接口表示一个Calendar事件列表。

ToDo——这个接口表示TaskList中的单个Task。

ToDoList——这个接口表示Task列表。

这个包定义的主要类是:

PIM——PIM类定义一些方法,用于创建一个所有现有列表的索引,打开并编辑那些列表,将其作为来自vCard和vCalendar(Contact和Calendar的Internet标准)的导入或导出。

Contact和ContactList

一个Contact表示AddressBook中的单个条目。Contact中的主要字段是Name、Address、Email、Birthday、Photo和Telephone。

为了确保跨平台可移植性,建议使用SuperInterfacePIMList提供的方法isSupportedField()。

清单1展示如何向AddressBook添加一个Contact:

清单1.将Contact添加到AddressBook

ContactListaddressBook=null;  try{  addressBook=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //ExitApplication  }   ContactsingleContact=addressBook.createContact();  String[]name=newString[addressBook.stringArraySize(Contact.NAME)];   if(addressBook.isSupportedField(Contact.NAME_FORMATTED)  singleContact.addString(Contact.NAME_FORMATTED,  PIMItem.ATTR_NONE,"Mrs.JaneDoe");   ThecreateContact()methodcreatesatemporaryemptyContact.Acommit()callmakes  theContactdatapersistent.Itisadvisabletoclosethelistsbyinvokingtheclose()  methodafternecessaryoperationshavebeenperformed.   try{  singleContact.commit();  }catch(PIMExceptione){  //Exceptionoccured  }  try{  //Othercleanuptasks  addressBook.close();  }catch(PIMExceptione){   }

Event和EventList

一个Event表示Event数据库中的单个条目,比如,移动设备上的日历。Event中的关键字段是Location、Summary、Startdate、EndDate和Alarmnotification。清单2展示如何向Event数据库添加一个Event。

清单2.添加一个Event

EventListeventList=null;  try{  eventList=(EventList)PIM.getInstance().openPIMList(PIM.EVENT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  return;  }  EventsingleEvent=eventList.createEvent();  if(eventList.isSupportedField(Event.SUMMARY))  singleEvent.addString(Event.SUMMARY,PIMItem.ATTR_NONE,"JavaTraining");  if(eventList.isSupportedField(Event.START))  singleEvent.aDDDate(Event.START,PIMItem.ATTR_NONE,aDate.getTime());  if(eventList.isSupportedField(Event.END))  singleEvent.addDate(Event.END,PIMItem.ATTR_NONE,aDate.getTime());   try{  singleEvent.commit();  }catch(PIMExceptione){  //Anerroroccured  }  try{  eventList.close();  }catch(PIMExceptione){   }

ToDo和ToDoList

ToDo接口表示移动设备上的Task数据库中的单个任务,重要的字段是NoteorSummary、Priority、CompletionDate、DueDate和whethercompleted。清单3展示如何向数据库持久化添加一个ToDo。

清单3.添加一个Task

ToDoListtasks=null;  try{  tasks=(ToDoList)PIM.getInstance().openPIMList(PIM.TODO_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //Anerroroccurred  return;  }  ToDosingleTask=tasks.createToDo();  if(tasks.isSupportedField(Event.SUMMARY))  singleTask.addString(ToDo.SUMMARY,PIMItem.ATTR_NONE,"ShoppingforHalloween");  if(tasks.isSupportedField(Event.DUE))  singleTask.addDate(ToDo.DUE,PIMItem.ATTR_NONE,newDate().getTime());   try{  singleTask.commit();  }catch(PIMExceptione){  //Anerroroccured  }  try{  tasks.close();  }catch(PIMExceptione){   }

PIM与RMS的区别

在继续讨论之前,我们先回顾一下J2ME提供的另一个关键功能,RecordManagementStore(RMS)概念。RMS允许J2ME应用程序持久地本地存储数据。RMS包含以下组件:

Records——与每条记录拥有一个或多个字段的数据库系统不同,RMS中的一条Record是一个单独的数据字段。它没有一个预先定义的数据类型或大小,可以包含任意数据。

RecordStore——RecordStore是一个Records集合,可以通过J2ME应用程序根据名称访问。

以下是PIM和RMS的区别,尽管二者都负责在设备上存储持久数据。

PIM向(从)AddressBook、Calendar和TaskList等已定义的实体存储(和检索)数据。而另一方面,RMS向(从)一个常规数据库存储(和检索)数据。PIM中的单个实体是一个Contact、Calendar条目或一个Task,而在RMS中,单个实体是一个字节数组

PIM并不局限于本地设备,它可以访问一个附加SIM或另一个远程设备中的数据。RMS只能访问本地设备中的数据。

PIM可以从vCalendar或vContact等外部源导入或导出,而RMS没有任何Export或Import功能。

与RMS相比,PIM中的数据解释更加灵活。例如,一个Contact(以标准格式定义)总是可以由另一个J2ME应用程序轻松解释。而RMS中的记录是字节数组,其他J2ME应用程序需要拥有关于如何解释它的信息。

一个示例——添加一个联系人

在这个小节中,我们将讨论此前提到过的一个方法addContact(),展示如何向AddressBook添加一个联系人。当在表单中提交一个用户命令时,这个方法(见清单4)将在一个单独的线程中调用。这个方法访问通过UITextfields字段输入的数据。

清单4.addContact()方法

//Import  importjavax.microedition.lcdui.*;  importjavax.microedition.midlet.*;  importjavax.microedition.pim.*;    //Textinput  TextFieldnameField;  TextFieldphoneField;   …   publicvoidaddContact(){   ContactListcontacts=null;   try{  contacts=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //Anerroroccurred  e.printStackTrace();  }   Contactcontact=contacts.createContact();   String[]name=newString[contacts.stringArraySize(Contact.NAME)];   if(contacts.isSupportedArrayElement(Contact.NAME,Contact.NAME_GIVEN))  name[Contact.NAME_GIVEN]=nameField.getString();   if(contacts.isSupportedField(Contact.TEL))  contact.addString(Contact.TEL,Contact.ATTR_HOME,phoneField.toString());   try{   contact.commit();   }catch(Exceptione){}   }

运行时和安全问题

PIM MIDlet应该在一个支持PIM的配置(即JSR75)中运行。我们通过在Sun的WirelessToolkit2.5上先单击Settings然后单击APISelection来选择以下设置。选择PIM MIDlet要运行的移动设备时使用相同的方法。

如何理解J2ME PIM的概念

图1.PIM MIDlet Runtime API Selection

MIDlet需要其他权限才能读写Contacts、Calendar或TaskLists,可以通过在WirelessToolkit中单击Settings并选择Permissions来设置相关权限。这里提供了用于ContactList、EventList和TodoList的所有Read和Write权限。

如何理解J2ME PIM的概念

图2.PIM MIDlet安全问题

我们讨论了J2ME中的另一个重要功能Personal Information Management(PIM),该功能允许访问移动设备上形式为Contact、Task和Event的本地数据。本文还比较了PIM和RMS,后者是处理设备数据的另一个功能。现在,您可以通过PIM自带的导入和导出功能同步J2ME应用程序和vCard以及vCalendar,后两者分别是Contact和Calendar的Internet标准格式。

关于如何理解J2ME PIM的概念就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何理解J2ME PIM的概念

本文链接: https://lsjlt.com/news/86524.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解J2ME PIM的概念
    这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。这里和大家分享一下J2ME PIM的概念,根据JSR...
    99+
    2024-04-02
  • J2ME与JVM的概念详解
    这篇文章主要介绍“J2ME与JVM的概念详解”,在日常操作中,相信很多人在J2ME与JVM的概念详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”J2ME与JVM的概念详解”...
    99+
    2024-04-02
  • 如何理解J2ME单元测试理念
    这期内容当中小编将会给大家带来有关如何理解J2ME单元测试理念,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。J2ME Unit是由KentBeck和ErichGamma设...
    99+
    2024-04-02
  • 如何理解java中进程的概念
    进程的概念进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。 一、进程是一个实体每一个进程都有它自己...
    99+
    2021-05-21
    java基础 java 进程 概念 理解
  • 如何理解java中的集合概念
    什么是集合?Java集合类存放在java.util包中,是一个用来存放对象的容器。注意:集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。...
    99+
    2017-08-04
    java基础 理解 java 集合 概念
  • 如何理解的概念和重要性
    如何理解的概念和重要性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  物料清单(BillOfMaterial简称BOM)是详...
    99+
    2024-04-02
  • 如何理解Spark中的核心概念RDD
    如何理解Spark中的核心概念RDD,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。RDD全称叫做弹性分布式数据集(Resilient Dist...
    99+
    2024-04-02
  • 如何理解C++属性具体概念
    本篇文章给大家分享的是有关如何理解C++属性具体概念,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++编程语言中的属性是一个比较基础的知识概念,我们初学者们在学习的过程中需要...
    99+
    2023-06-17
  • J2ME编程中的几个重要概念分别是什么
    J2ME编程中的几个重要概念分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们都知道,Java ME 以往称作J2ME(Java Platform,Micro Edi...
    99+
    2023-06-17
  • 如何理解J2ME的Web服务API
    这篇文章将为大家详细讲解有关如何理解J2ME的Web服务API,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。你对J2ME的Web服务API是否了解,这里和大...
    99+
    2024-04-02
  • 如何理解那14个基本JavaScript概念
    本篇文章为大家展示了如何理解那14个基本JavaScript概念,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。基础速览大家好! 对于今天的帖子,我决定对JavaSc...
    99+
    2024-04-02
  • 如何理解Kubernetes核心概念与组件
    本篇内容主要讲解“如何理解Kubernetes核心概念与组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Kubernetes核心概念与组件”吧!Kub...
    99+
    2024-04-02
  • 如何理解各种VB.NET访问级别的概念
    今天就跟大家聊聊有关如何理解各种VB.NET访问级别的概念,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。VB.NET编程语言与Java怨言机制大致相同,其中也包括很多访问级别,方便我...
    99+
    2023-06-17
  • 如何理解J2ME体系结构
    今天就跟大家聊聊有关如何理解J2ME体系结构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。你对J2ME体系结构是否了解,这里和大家分享一下,J2ME...
    99+
    2024-04-02
  • Java流的概念怎么理解
    本篇内容主要讲解“Java流的概念怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java流的概念怎么理解”吧!昨天寝室同学问了我个关于Java流的问题,在解答完后很有感触,我认为可能所有...
    99+
    2023-06-17
  • python 类相关概念理解
    目录什么是类,对象,实例,类## 标题变量(类属性),实例变量(实例属性)类变量和类属性的分类类调用实例方法类的封装(enclosure),继承和多态迭代,迭代器(iterator)...
    99+
    2024-04-02
  • ORACLE中的Server_name和SID概念理解
    博文说明【前言】:    本文将通过个人口吻介绍在ORACLE中的Server_name和实例名SID的相关概念,在目前时间点【2017年5月22号】下,所掌握的技术水平有限,可能会存在...
    99+
    2024-04-02
  • Java中难理解的四个概念
    目录前言匿名内部类创建匿名内部类有两种办法匿名类的典型使用场景多线程线程生命周期为什么要使用多线程创建线程有两种方式两种创建方式对比同步为什么要使用同步序列化为什么使用序列化关键特性...
    99+
    2024-04-02
  • 理解Golang泛型的核心概念
    go 泛型允许创建可重用类型和函数,不会修改代码本身。它包括:泛型类型:使用类型参数,允许在创建类型时指定参数类型(如 []t、map[k]v)。泛型函数:使用类型参数,必须指定显式的类...
    99+
    2024-04-03
    golang 泛型
  • RAC的概念和原理
    这篇文章主要讲解了“RAC的概念和原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RAC的概念和原理”吧! 一 clusterware组成OCR,VOT...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作