研究生期間就沒寫過Java代碼了,這幾天由於想做一個統計網頁詞頻的工具,但是使用C++不是很方便,於是又用Java做了一個小工具。翻開電腦中以前的文件,發現之前還做過一個android中批量添加聯系人的工具,瞬間感覺好親切,也感歎時間過得好快,一眨眼研究生就快要過完了。
記得當初做這個批量添加聯系人的工具是剛來讀研時,一大堆新同學的手機號碼需要添加,班長整理出來同學們的通訊錄後就得一個一個輸入聯系人和號碼到手機中,想想這罪可有的受,於是就想能不能讓手機直接讀取xls格式(Excel格式)的文件到通訊錄中,在網上查了下發現一般管理類的軟件都沒有這個小工具,想想可能是由於這個工具對excel文件的格式有限制吧。於是想干脆自己做一個算了,這個邏輯也不是很復雜,那個時候還懂一點android開發的東西。而且這個東西對android中的特性也不是很高,所以就做了一個批量添加聯系人的小工具。現在兩年沒碰java,好多java的api和特性都忘記了,前兩天做哪個網頁詞頻統計的工具都是跌跌撞撞寫出來的,android的東西就忘的幾乎差不多了,只記得實現這個工具的大致思路。
一時玩心大起,便想看看當初做的這個東西。可惜電腦換系統了以前android開發的sdk也沒了,不過好歹軟件的apk文件還在,於是就借了同學的三星的手機將它安裝到手機上,發現還能正常運行!!!簡直太欣慰了,說明當初編寫的代碼魯棒性還是蠻不錯的,而且代碼中注釋也不少,現在看了下代碼也能明白大概的思路,要是再花點時間看看Android開發的api可能就很快能上手了。於是在這裡整理下。個人覺得這個東西實用性還是蠻強的,雖然沒多少技術含量^ ^。
下面是實現這個工具的基本結構:
實現往通訊錄中添加聯系人需要上面基本的三個步驟,但是由於最開始就是為自己和班級同學制作的,所有默認顯示的就是我們班同學的通訊錄,軟件運行的初始化界面如下:
軟件開始運行後會有個提示框,提示軟件的操作方法,點擊確定後就可以操作,最上面有兩個按鈕,一個“一鍵添加”和“選擇文件添加”按鈕,下面每一行代表一個聯系人的信息,從左到右依次是聯系人姓名,電話號碼,以及是否選擇(是否選擇添加到通訊錄中,默認是全部選擇)。
將不需要添加的聯系人的右邊的多選框中的勾去掉,然後點擊“一鍵添加”按鈕,就可以將選中的聯系人全部倒入通訊錄中。
如果要添加自己的通訊錄,可以將通訊錄存在的excel文件中(excel文件中第一列為聯系人姓名,第二列為電話號碼),然後點擊上面的“選中文件添加”按鈕,此時會彈出文件選擇對話框,選中需要添加的通訊錄對應的xls文件,此時下面的列表中就會顯示你選中的通訊錄中的聯系人和號碼,然後點擊“添加”就可以將選中的聯系人添加到通訊錄中了。
上面就是程序的基本設計思路,具體的實現代碼如下,我現在也只能根據注釋看出那些函數式是什麼的,以及程序的邏輯結構是怎麼組織的,至於編程的細節都忘得長不多了。
真是囧啊。
存放聯系人信息的類:
package com.example.bean;
public class PhoneRecord {
private int id;
private String name;
private String number;
private boolean isChecked;
public PhoneRecord() {
super();
}
public PhoneRecord(String name, String number) {
super();
this.name = name;
this.number = number;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}
}
主要的Activity,程序的處理邏輯都在這個類裡面。裡面同時有一些按鈕的響應代碼。
package com.example.activity;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import jxl.Sheet;
import jxl.Workbook;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.ContentProviderOperation;
import android.content.OperationApplicationException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.example.bean.PhoneRecord;
import com.example.contract.R;
/**
*
* @author xiaxiongfeng
* @date 2013/9/1
* @version 1.0
*/
public class MainActivity extends Activity {
//保存從excel文件中讀取進來的數據
private List lists;
//保存去除掉某些用戶後的聯系人數據
private List records;
//用來顯示excel中聯系人和聯系電話的控件
private ListView listView;
//將數據映射到listView的適配器
private SimpleAdapter adapter;
//映射到控件中的數據
private List