寫一個安卓軟件,實現獲取通訊錄里的人名和對應的電話號碼,並且通過ListView顯示出來。
因為要獲取手機本地的信息,所以第一個步驟就是先給定權限咯
<uses-permission android:name="android.permission.READ_CONTACTS"/>
因為獲取到信息后是通過ListView顯示出來,所以把布局寫好,總共兩個布局,一個布局放ListView,一個布局放ListView的子布局,這里比較基礎,就不放代碼了
接着就是通過java代碼實現功能了
package com.contentprovide.liuliu.test_9_12_01;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ListView mylist;
List<HashMap<String, String>> list;
HashMap<String, String> hash;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mylist = (ListView) findViewById(R.id.list);
list = new ArrayList();
// 實例化數據庫指針
cursor = this.getContentResolver().
query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
// 獲取本地通訊錄信息,並通過鍵值對的方式放進ArrayList數組中
while (cursor.moveToNext()) {
String get_name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String get_number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
hash = new HashMap<>();
hash.put("h_name", get_name);
hash.put("h_number", get_number);
list.add(hash);
}
mylist.setAdapter(new MyAdapter());
}
// 適配器
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Myholder myholder;
if (view == null) {
view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
myholder = new Myholder();
myholder.myname = view.findViewById(R.id.name);
myholder.mynumber = view.findViewById(R.id.number);
view.setTag(myholder);
} else {
myholder = (Myholder) view.getTag();
}
myholder.myname.setText(list.get(i).get("h_name"));
myholder.mynumber.setText(list.get(i).get("h_number"));
return view;
}
class Myholder {
TextView myname;
TextView mynumber;
}
}
}
