📄 cardcase.java
字号:
import javax.microedition.pim.*;
import javax.microedition.lcdui.*;
import java.util.Vector;
import java.util.Enumeration;
import java.util.Date;
/**
* Cardcase类描述了名片盒,为视图提供了访问设备联系人列表的所有方法。
*/
public class Cardcase {
private ContactList[] lists; //设备中所有的联系人列表
//构造方法,创建一个名片盒对象
public Cardcase() throws PIMException {
PIM pim = PIM.getInstance();
String[] listNames = pim.listPIMLists(PIM.CONTACT_LIST);
lists = new ContactList[listNames.length];
for(int i=0; i<lists.length; i++) {//打开设备中所有联系人列表
lists[i] = (ContactList)pim.openPIMList(PIM.CONTACT_LIST,
PIM.READ_WRITE, listNames[i]);
}
}
//释放资源
public void release() throws PIMException {
for(int i=0; i<lists.length; i++) {//关闭设备中所有联系人列表
lists[i].close();
}
}
//返回card名片支持的所有字段
public int[] getSupportedFields(Contact card) {
return card.getPIMList().getSupportedFields();
}
//返回card名片使用的字段
public int[] getUsedFields(Contact card) {
return card.getFields();
}
//返回card名片没有使用的字段
public int[] getUnusedFields(Contact card) {
int[] supportedFields = card.getPIMList().getSupportedFields();
int[] usedFields = card.getFields();
int[] unusedFields = new int[supportedFields.length-usedFields.length];
int j=0;
for(int i=0; i<supportedFields.length; i++) {
if(card.countValues(supportedFields[i]) == 0) { //未使用的字段
unusedFields[j++] = supportedFields[i];
}
}
return unusedFields;
}
//返回card名片中fieldCode字段的标签
public String getFieldLabel(Contact card, int fieldCode) {
return card.getPIMList().getFieldLabel(fieldCode);
}
//返回card名片中fieldCode字段的类型
public int getFieldType(Contact card, int fieldCode) {
return card.getPIMList().getFieldDataType(fieldCode);
}
//返回card名片中fieldCode字符串数组字段的元素索引
public int[] getArrayElementIndices(Contact card, int fieldCode) {
return card.getPIMList().getSupportedArrayElements(fieldCode);
}
//返回card名片中fieldCode字符串数组字段的elemIndex元素的标签
public String getArrayElementLabel(Contact card, int fieldCode, int elemIndex) {
return card.getPIMList().getArrayElementLabel(fieldCode, elemIndex);
}
//返回card名片的标签
public String getCardLabel(Contact card) {
int displayField = Contact.FORMATTED_NAME;
String label = null;
if(card.getPIMList().isSupportedField(displayField)) {
boolean defined = true;
if(card.countValues(displayField) == 0) {
defined = false;
}
else {
String s = card.getString(displayField, 0);
if(s.trim().length() <= 0) {
defined = false;
}
}
if(!defined) {
fixDisplayLabel(card, displayField);
}
if(card.countValues(displayField) > 0) {
String s = card.getString(displayField, 0);
if(s.trim().length() > 0) {
label = s;
}
}
}
if(label == null) {
label = "<不完整的名片>";
}
return label;
}
//为card名片设置一个标签
private void fixDisplayLabel(Contact card, int displayField) {
if(card.getPIMList().isSupportedField(Contact.NAME)) {
if(card.countValues(Contact.NAME) != 0) {
String[] na = card.getStringArray(Contact.NAME, 0);
if(na != null) {
StringBuffer sb = new StringBuffer();
if(na[Contact.NAME_GIVEN] != null) {
sb.append(na[Contact.NAME_FAMILY]);
}
if(na[Contact.NAME_GIVEN] != null) {
if(sb.length() > 0) {
sb.append(" ");
}
sb.append(na[Contact.NAME_FAMILY]);
}
String s = sb.toString().trim();
if(s.length() > 0) {
if(card.countValues(displayField) == 0) {
card.addString(displayField, Contact.ATTR_NONE, s);
}
else {
card.setString(displayField, 0, Contact.ATTR_NONE, s);
}
}
}
}
}
}
//返回设备中所有联系人列表的名字
public String[] getAllMemoryName() {
String[] names = new String[lists.length];
for(int i=0; i<names.length; i++) {
names[i] = lists[i].getName();
}
return names;
}
//使用memoryName联系人列表中创建一个名片
public Contact createCard(String memoryName) {
int i=0;
while(i<lists.length &&
!lists[i].getName().equals(memoryName)) {
i++;
}
Contact card = null;
if(i<lists.length) {
card = lists[i].createContact(); //创建名片
if(lists[i].isSupportedField(Contact.FORMATTED_NAME)) { //添加字段
card.addString(Contact.FORMATTED_NAME, PIMItem.ATTR_NONE, "");
}
}
return card;
}
//返回名片盒中所有的名片
public Vector getCards() throws PIMException {
Vector v = new Vector();
for(int i=0; i<lists.length; i++) {
Enumeration e = lists[i].items();
while(e.hasMoreElements()) {
v.addElement(e.nextElement());
}
}
return v;
}
//返回名片盒中category组中的名片
public Vector getCards(String category) throws PIMException {
Vector v = new Vector();
for(int i=0; i<lists.length; i++) {
Enumeration e = lists[i].itemsByCategory(category);
while(e.hasMoreElements()) {
v.addElement(e.nextElement());
}
}
return v;
}
//删除名片card
public void removeCard(Contact card) throws PIMException {
((ContactList)card.getPIMList()).removeContact(card);
}
//返回所有的名片组
public String[] getCategories() throws PIMException {
Vector v = new Vector();
for(int i=0; i<lists.length; i++) {
String[] categories = lists[i].getCategories();
for(int j=0; j<categories.length; j++) {
if(!v.contains(categories[j])) {
v.addElement(categories[j]);
}
}
}
String[] categories = new String[v.size()];
v.copyInto(categories);
return categories;
}
//把card名片添加到category名片组中
public void addCardToCategory(Contact card, String category) throws PIMException {
String[] categories = card.getCategories();
int i=0;
while(i<categories.length && !category.equals(categories[i])) {
i++;
}
if(i>= categories.length) {
card.addToCategory(category);
card.commit();
}
}
//删除
public void deleteCardFromCategory(Contact card, String category) throws PIMException {
card.removeFromCategory(category);
card.commit();
}
//把字符串数组中的元素连接成一个字符串
public String joinStringArray(String[] a) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < a.length; i++) {
if (a[i] != null && a[i].length() > 0) {
if (sb.length() > 0) {
sb.append(", ");
}
sb.append(a[i]);
}
}
return sb.toString();
}
//创建名片组name
public void addCategory(String name) throws PIMException {
for(int i=0; i<lists.length; i++) {
lists[i].addCategory(name);
}
}
//删除名片组name,containItem表示是否同时删除组中的名片
public void deleteCategory(String name, boolean containItem) throws PIMException {
for(int i=0; i<lists.length; i++) {
lists[i].deleteCategory(name, containItem);
}
}
//把fieldCode字段添加到card名片中
public void addFieldToCard(Contact card, int fieldCode) {
int fieldType = getFieldType(card, fieldCode);
switch(fieldType) {
case Contact.STRING: {
card.addString(fieldCode, PIMItem.ATTR_NONE, "");
break;
}
case Contact.INT: {
card.addInt(fieldCode, PIMItem.ATTR_NONE, 0);
break;
}
case Contact.DATE: {
long time = (new Date()).getTime();
card.addDate(fieldCode, PIMItem.ATTR_NONE, time);
break;
}
case Contact.BOOLEAN: {
card.addBoolean(fieldCode, PIMItem.ATTR_NONE, false);
break;
}
case Contact.STRING_ARRAY: {
int[] supperArrElement = getArrayElementIndices(card, fieldCode);
int size = 0;
for(int i=0; i<supperArrElement.length; i++) {
size = Math.max(size, supperArrElement[i]+1);
}
String[] a = new String[size];
for(int i=0; i<a.length; i++) {
a[i] = "";
}
card.addStringArray(fieldCode, PIMItem.ATTR_NONE, a);
break;
}
case Contact.BINARY: {
card.addBinary(fieldCode, PIMItem.ATTR_NONE, new byte[16], 0, 16);
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -