最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

Android软件开发之获取通讯录联系人信息

IT圈 admin 34浏览 0评论

2024年1月22日发(作者:佼如风)

Android软件开发之获取通讯录联系人信息

Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息拿出来。 这一篇文章我主要带领同学们熟悉Android的通讯录机制。

图中选中的数据库 就是系统储存联系人的数据库,我们将它打开看看里面储存了些什么东东? 如果对数据库不太清楚的请查看我的博文Android游戏开发之数据库SQLite 详细介绍

打开后 发面里面有一堆表,同学们先别慌张。今天我们主要讨论红框内的4个比较常用的表,后期我在介绍其它表的使用。这里说一下如果你想在真机上查看数据库的话必需要先获得root权限,否则无法查看。

ts 表

_id :表的ID,主要用于其它表通过contacts 表中的ID可以查到相应的数据。

display_name: 联系人名称

photo_id:头像的ID,如果没有设置联系人头像,这个字段就为空

times_contacted:通话记录的次数

last_time_contacted: 最后的通话时间

lookup :是一个持久化的储存 因为用户可能会改名子 但是它改不了lookup

raw_contact_id:通过raw_contact_id可以找到 raw_contact表中相对的数据。

data1 到 data15 这里保存着联系人的信息 联系人名称 联系人电话号码 电子邮件 备注 等等。

_look_up表

data_id : 通过data_id可以找到 datat表中相对的数据。

raw_contact_id : 通过raw_contact_id 可以找到 raw_contact_表中相对的数据。

normalized_number: 这个字段就比较有意思了,它是将每个电话号码逆序排列。

_contact表

version :版本号,用于监听变化

deleted :删除标志, 0为默认 1 表示这行数据已经删除

display_name : 联系人名称

last_time_contacts : 最后联系的时间

有关这些的源码都在tsContract这个类里面,如果想深入了解的话

可以去看看,数据库相关的操作 联查啊 啥的 都在里面。

下面说说代码是怎么用的

先说说 T_URI,获取联系人的时候需要去这个url中去找数据 。它所指向的其实是“content:// ts/data/phones”。这个url 对应着contacts表 和

raw_contacts表 以及 data表 所以说我们的数据都是从这三个表中获取的。

这里强调一下query第二个参数

private static final String[] PHONES_PROJECTION = new

1

String[] {

2

Y_NAME, ,

_ID,T_ID };

它的意思是只去表中找 显示名称 电话号码 头像ID 联系人ID 这4个数据 ,如果你须要其它数据 的话 就须要修改这里。

获得手机通讯录联系人信息

1

/**得到手机通讯录联系人信息**/

2

3

private void getPhoneContacts() {

ContentResolver resolver =

4

5

tentResolver();

6

7

//

获取手机联系人

8

Cursor phoneCursor =

9

(T_URI,PHONES_PROJECTION,

0

null, null, null);

1

1

if (phoneCursor != null) {

1

while (Next()) {

2

1

3

//得到手机号码

1 String phoneNumber =

4

ing(PHONES_NUMBER_INDEX);

5

//当手机号码为空的或者为空字段

跳过当前循环

1 if (y(phoneNumber))

6

continue;

1

7

1 //得到联系人名称

8

String contactName =

1

9

ing(PHONES_DISPLAY_NAME_INDEX);

2

0

//得到联系人ID

2 Long contactid =

1

g(PHONES_CONTACT_ID_INDEX);

2

2 //得到联系人头像ID

3

Long photoid =

2

4

g(PHONES_PHOTO_ID_INDEX);

2

5

//得到联系人头像Bitamp

2 Bitmap contactPhoto = null;

6

2

7

//photoid

大于0

表示联系人有头像

如果没有给此人设28

置头像则给他一个默认的

if(photoid > 0 ) {

2

Uri uri

9

3=pendedId(0

NTENT_URI,contactid);

InputStream input =

3

1

ntactPhotoInputStream(re3solver, uri);

contactPhoto =

2

Stream(input);

}else {

3

contactPhoto =

3

4

Resource(getResources(),

t_photo);

}

5

3

(contactName);

6

(phoneNumber);

3

(contactPhoto);

7

}

3

8

();

3

}

9

4 }

0

41

42

43

44

45

4

6

获得手机sim卡联系人信息

sim卡和手机本人 获取的方式类似 只是url有点不一样 ,须要注意的一点是 sim卡 是没有联系人头像的。

/**得到手机SIM卡联系人人信息**/

private void getSIMContacts() {

ContentResolver resolver =

tentResolver();

1

2

//

获取Sims卡联系人

3

Uri uri = ("content://icc/adn");

4

Cursor phoneCursor = (uri,

5

PHONES_PROJECTION, null, null,

6

null);

7

8

if (phoneCursor != null) {

9

while (Next()) {

10

11

12

//

得到手机号码

13

String phoneNumber =

14

ing(PHONES_NUMBER_INDEX);

15

16

//

当手机号码为空的或者为空字段

跳过当前循环

17

if (y(phoneNumber))

18

continue;

19

20

//

得到联系人名称

21

String contactName = phoneCursor

22

23

.getString(PHONES_DISPLAY_NAME_INDEX);

24

25

26

//Sim卡中没有联系人头像

27

28

(contactName);

29

(phoneNumber);

}

();

}

}

这个界面就可以看到联系人的 名称 号码 以及头像了。如果想在模拟器上看须要将图片拷贝到SD卡中,然后在联系人中设置一下,这里就可以看到头像了,或者 真机上会比较清楚、

任意点击一个联系人会调用系统拨打电话的界面 ,代码如下。

//调用系统方法拨打电话

1

Intent dialIntent = new

2

Intent(_CALL, Uri

3

.parse("tel:" +

4

(position)));

startActivity(dialIntent);

最重要的是须要中 加入权限 否则代码会报错的。 千万别忘了。

1

android:name="_CONTACTS"/>

2

3

4

android:name="_PHONE"/>

下面给出完整的代码

1

2

3

4

5

6

7

import tream;

import ist;

import tivity;

import tResolver;

import tUris;

import t;

8

import ;

9

import ;

10

import ;

11

import Factory;

12

import ;

13

import ;

14

import tsContract;

15

import

16

17

;

18

import

19

20

;

21

import ils;

22

import Inflater;

23

import ;

24

import oup;

25

import rView;

26

import apter;

27

import iew;

28

import ew;

29

import ew;

30

import ClickListener;

31

32

public class ContactsActivity extends ListActivity {

33

34

Context mContext = null;

35

36

/**获取库Phon表字段**/

37

38

private static final String[] PHONES_PROJECTION = new

39

String[] {

Y_NAME, ,

40

41

_ID,T_ID };

42

43

/**联系人显示名称**/

44

static final int PHONES_DISPLAY_NAME_INDEX = 0;

45

private

46

47

/**电话号码**/

48

49

private static final int PHONES_NUMBER_INDEX = 1;

50

51

52

/**头像ID**/

53

54

private static final int PHONES_PHOTO_ID_INDEX = 2;

55

56

/**联系人的ID**/

57

58

private static final int PHONES_CONTACT_ID_INDEX = 3;

59

60

61

/**联系人名称**/

62

63

private ArrayList mContactsName = new

64

ArrayList();

65

66

/**联系人头像**/

67

68

private ArrayList mContactsNumber = new

69

ArrayList();

70

71

/**联系人头像**/

72

73

private ArrayList mContactsPhonto = new

74

ArrayList();

75

76

ListView mListView = null;

77

MyListAdapter myAdapter = null;

78

79

@Override

80

public void onCreate(Bundle savedInstanceState) {

mContext = this;

81

mListView = tView();

82

83

/**得到手机通讯录联系人信息**/

84

getPhoneContacts();

85

86

myAdapter = new MyListAdapter(this);

87

setListAdapter(myAdapter);

88

89

90

temClickListener(new

91

92

OnItemClickListener() {

93

@Override

94

public void onItemClick(AdapterView

95

96

adapterView, View view,

int position, long id) {

97

98

//调用系统方法拨打电话

99

Intent dialIntent = new

10

0

Intent(_CALL, Uri

.parse("tel:" +

10

1

(position)));

startActivity(dialIntent);

10

}

2

});

10

3

te(savedInstanceState);

10

4

}

10

5

/**得到手机通讯录联系人信息**/

106

private void getPhoneContacts() {

ContentResolver resolver =

10

7

tentResolver();

10

8

//

获取手机联系人

10Cursor phoneCursor =

9

(T_URI,PHONES_PROJECTION,

0

null, null, null);

11

1

if (phoneCursor != null) {

11

while (Next()) {

2

11

3

//得到手机号码

11 String phoneNumber =

4

ing(PHONES_NUMBER_INDEX);

5

//当手机号码为空的或者为空字段

跳过当前循环

11 if (y(phoneNumber))

6

continue;

11

7

11 //得到联系人名称

8

String contactName =

11

9

ing(PHONES_DISPLAY_NAME_INDEX);

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

//得到联系人ID

Long contactid =

g(PHONES_CONTACT_ID_INDEX);

//得到联系人头像ID

Long photoid =

g(PHONES_PHOTO_ID_INDEX);

//得到联系人头像Bitamp

Bitmap contactPhoto = null;

//photoid

大于0

表示联系人有头像

如果没有给此人设置头像则给他一个默认的

if(photoid > 0 ) {

Uri uri

=pendedId(T_URI,contactid);

InputStream input =

ntactPhotoInputStream(resolver, uri);

contactPhoto =

Stream(input);

}else {

contactPhoto =

Resource(getResources(),

t_photo);

}

(contactName);

(phoneNumber);

(contactPhoto);

}

();

}

}

/**得到手机SIM卡联系人人信息**/

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

private void getSIMContacts() {

ContentResolver resolver =

tentResolver();

//

获取Sims卡联系人

Uri uri = ("content://icc/adn");

Cursor phoneCursor = (uri,

PHONES_PROJECTION, null, null,

null);

if (phoneCursor != null) {

while (Next()) {

//

得到手机号码

String phoneNumber =

ing(PHONES_NUMBER_INDEX);

//

当手机号码为空的或者为空字段

跳过当前循环

if (y(phoneNumber))

continue;

//

得到联系人名称

String contactName = phoneCursor

.getString(PHONES_DISPLAY_NAME_INDEX);

//Sim卡中没有联系人头像

(contactName);

(phoneNumber);

}

();

}

}

class MyListAdapter extends BaseAdapter {

public MyListAdapter(Context context) {

mContext = context;

}

public int getCount() {

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

//设置绘制数量

return ();

}

@Override

public boolean areAllItemsEnabled() {

return false;

}

public Object getItem(int position) {

return position;

}

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView,

ViewGroup parent) {

ImageView iamge = null;

TextView title = null;

TextView text = null;

if (convertView == null) {

convertView =

(mContext).inflate(

ist, null);

iamge = (ImageView)

ewById(_image);

title = (TextView)

ewById(_title);

text = (TextView)

ewById(_text);

}

//绘制联系人名称

t((position));

//绘制联系人号码

t((position));

//绘制联系人头像

geBitmap((position));

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

return convertView;

}

}

}

208

列表的布局文件

1

2

3

4

5

6

7

xmlns:android="/apk/res/andro8

id"

9

android:layout_width="fill_parent"

1android:layout_height="wrap_content">

0

1 android:layout_width="40dip"

1

android:layout_height="40dip" />

1

2

android:layout_width="fill_parent"

1android:layout_height="wrap_content"

3

android:layout_toRightOf="@+id/color_image"

1 android:layout_alignParentBottom="true"

4

android:layout_alignParentRight="true"

1android:singleLine="true"

5

android:ellipsize="marquee"

1 android:textSize="15dip" />

6

1 android:layout_width="fill_parent"

7

android:layout_height="wrap_content"

1 android:layout_toRightOf="@+id/color_image"

8

android:layout_below="@+id/color_title"

1 android:layout_alignParentBottom="true"

9

android:layout_alignParentRight="true"

2 android:singleLine="true"

0

android:ellipsize="marquee"

2 android:textSize="20dip" />

1

22

23

源代码下载:

点击链接下载Android软件开发之获取通讯录联系人信息

2024年1月22日发(作者:佼如风)

Android软件开发之获取通讯录联系人信息

Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息拿出来。 这一篇文章我主要带领同学们熟悉Android的通讯录机制。

图中选中的数据库 就是系统储存联系人的数据库,我们将它打开看看里面储存了些什么东东? 如果对数据库不太清楚的请查看我的博文Android游戏开发之数据库SQLite 详细介绍

打开后 发面里面有一堆表,同学们先别慌张。今天我们主要讨论红框内的4个比较常用的表,后期我在介绍其它表的使用。这里说一下如果你想在真机上查看数据库的话必需要先获得root权限,否则无法查看。

ts 表

_id :表的ID,主要用于其它表通过contacts 表中的ID可以查到相应的数据。

display_name: 联系人名称

photo_id:头像的ID,如果没有设置联系人头像,这个字段就为空

times_contacted:通话记录的次数

last_time_contacted: 最后的通话时间

lookup :是一个持久化的储存 因为用户可能会改名子 但是它改不了lookup

raw_contact_id:通过raw_contact_id可以找到 raw_contact表中相对的数据。

data1 到 data15 这里保存着联系人的信息 联系人名称 联系人电话号码 电子邮件 备注 等等。

_look_up表

data_id : 通过data_id可以找到 datat表中相对的数据。

raw_contact_id : 通过raw_contact_id 可以找到 raw_contact_表中相对的数据。

normalized_number: 这个字段就比较有意思了,它是将每个电话号码逆序排列。

_contact表

version :版本号,用于监听变化

deleted :删除标志, 0为默认 1 表示这行数据已经删除

display_name : 联系人名称

last_time_contacts : 最后联系的时间

有关这些的源码都在tsContract这个类里面,如果想深入了解的话

可以去看看,数据库相关的操作 联查啊 啥的 都在里面。

下面说说代码是怎么用的

先说说 T_URI,获取联系人的时候需要去这个url中去找数据 。它所指向的其实是“content:// ts/data/phones”。这个url 对应着contacts表 和

raw_contacts表 以及 data表 所以说我们的数据都是从这三个表中获取的。

这里强调一下query第二个参数

private static final String[] PHONES_PROJECTION = new

1

String[] {

2

Y_NAME, ,

_ID,T_ID };

它的意思是只去表中找 显示名称 电话号码 头像ID 联系人ID 这4个数据 ,如果你须要其它数据 的话 就须要修改这里。

获得手机通讯录联系人信息

1

/**得到手机通讯录联系人信息**/

2

3

private void getPhoneContacts() {

ContentResolver resolver =

4

5

tentResolver();

6

7

//

获取手机联系人

8

Cursor phoneCursor =

9

(T_URI,PHONES_PROJECTION,

0

null, null, null);

1

1

if (phoneCursor != null) {

1

while (Next()) {

2

1

3

//得到手机号码

1 String phoneNumber =

4

ing(PHONES_NUMBER_INDEX);

5

//当手机号码为空的或者为空字段

跳过当前循环

1 if (y(phoneNumber))

6

continue;

1

7

1 //得到联系人名称

8

String contactName =

1

9

ing(PHONES_DISPLAY_NAME_INDEX);

2

0

//得到联系人ID

2 Long contactid =

1

g(PHONES_CONTACT_ID_INDEX);

2

2 //得到联系人头像ID

3

Long photoid =

2

4

g(PHONES_PHOTO_ID_INDEX);

2

5

//得到联系人头像Bitamp

2 Bitmap contactPhoto = null;

6

2

7

//photoid

大于0

表示联系人有头像

如果没有给此人设28

置头像则给他一个默认的

if(photoid > 0 ) {

2

Uri uri

9

3=pendedId(0

NTENT_URI,contactid);

InputStream input =

3

1

ntactPhotoInputStream(re3solver, uri);

contactPhoto =

2

Stream(input);

}else {

3

contactPhoto =

3

4

Resource(getResources(),

t_photo);

}

5

3

(contactName);

6

(phoneNumber);

3

(contactPhoto);

7

}

3

8

();

3

}

9

4 }

0

41

42

43

44

45

4

6

获得手机sim卡联系人信息

sim卡和手机本人 获取的方式类似 只是url有点不一样 ,须要注意的一点是 sim卡 是没有联系人头像的。

/**得到手机SIM卡联系人人信息**/

private void getSIMContacts() {

ContentResolver resolver =

tentResolver();

1

2

//

获取Sims卡联系人

3

Uri uri = ("content://icc/adn");

4

Cursor phoneCursor = (uri,

5

PHONES_PROJECTION, null, null,

6

null);

7

8

if (phoneCursor != null) {

9

while (Next()) {

10

11

12

//

得到手机号码

13

String phoneNumber =

14

ing(PHONES_NUMBER_INDEX);

15

16

//

当手机号码为空的或者为空字段

跳过当前循环

17

if (y(phoneNumber))

18

continue;

19

20

//

得到联系人名称

21

String contactName = phoneCursor

22

23

.getString(PHONES_DISPLAY_NAME_INDEX);

24

25

26

//Sim卡中没有联系人头像

27

28

(contactName);

29

(phoneNumber);

}

();

}

}

这个界面就可以看到联系人的 名称 号码 以及头像了。如果想在模拟器上看须要将图片拷贝到SD卡中,然后在联系人中设置一下,这里就可以看到头像了,或者 真机上会比较清楚、

任意点击一个联系人会调用系统拨打电话的界面 ,代码如下。

//调用系统方法拨打电话

1

Intent dialIntent = new

2

Intent(_CALL, Uri

3

.parse("tel:" +

4

(position)));

startActivity(dialIntent);

最重要的是须要中 加入权限 否则代码会报错的。 千万别忘了。

1

android:name="_CONTACTS"/>

2

3

4

android:name="_PHONE"/>

下面给出完整的代码

1

2

3

4

5

6

7

import tream;

import ist;

import tivity;

import tResolver;

import tUris;

import t;

8

import ;

9

import ;

10

import ;

11

import Factory;

12

import ;

13

import ;

14

import tsContract;

15

import

16

17

;

18

import

19

20

;

21

import ils;

22

import Inflater;

23

import ;

24

import oup;

25

import rView;

26

import apter;

27

import iew;

28

import ew;

29

import ew;

30

import ClickListener;

31

32

public class ContactsActivity extends ListActivity {

33

34

Context mContext = null;

35

36

/**获取库Phon表字段**/

37

38

private static final String[] PHONES_PROJECTION = new

39

String[] {

Y_NAME, ,

40

41

_ID,T_ID };

42

43

/**联系人显示名称**/

44

static final int PHONES_DISPLAY_NAME_INDEX = 0;

45

private

46

47

/**电话号码**/

48

49

private static final int PHONES_NUMBER_INDEX = 1;

50

51

52

/**头像ID**/

53

54

private static final int PHONES_PHOTO_ID_INDEX = 2;

55

56

/**联系人的ID**/

57

58

private static final int PHONES_CONTACT_ID_INDEX = 3;

59

60

61

/**联系人名称**/

62

63

private ArrayList mContactsName = new

64

ArrayList();

65

66

/**联系人头像**/

67

68

private ArrayList mContactsNumber = new

69

ArrayList();

70

71

/**联系人头像**/

72

73

private ArrayList mContactsPhonto = new

74

ArrayList();

75

76

ListView mListView = null;

77

MyListAdapter myAdapter = null;

78

79

@Override

80

public void onCreate(Bundle savedInstanceState) {

mContext = this;

81

mListView = tView();

82

83

/**得到手机通讯录联系人信息**/

84

getPhoneContacts();

85

86

myAdapter = new MyListAdapter(this);

87

setListAdapter(myAdapter);

88

89

90

temClickListener(new

91

92

OnItemClickListener() {

93

@Override

94

public void onItemClick(AdapterView

95

96

adapterView, View view,

int position, long id) {

97

98

//调用系统方法拨打电话

99

Intent dialIntent = new

10

0

Intent(_CALL, Uri

.parse("tel:" +

10

1

(position)));

startActivity(dialIntent);

10

}

2

});

10

3

te(savedInstanceState);

10

4

}

10

5

/**得到手机通讯录联系人信息**/

106

private void getPhoneContacts() {

ContentResolver resolver =

10

7

tentResolver();

10

8

//

获取手机联系人

10Cursor phoneCursor =

9

(T_URI,PHONES_PROJECTION,

0

null, null, null);

11

1

if (phoneCursor != null) {

11

while (Next()) {

2

11

3

//得到手机号码

11 String phoneNumber =

4

ing(PHONES_NUMBER_INDEX);

5

//当手机号码为空的或者为空字段

跳过当前循环

11 if (y(phoneNumber))

6

continue;

11

7

11 //得到联系人名称

8

String contactName =

11

9

ing(PHONES_DISPLAY_NAME_INDEX);

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

//得到联系人ID

Long contactid =

g(PHONES_CONTACT_ID_INDEX);

//得到联系人头像ID

Long photoid =

g(PHONES_PHOTO_ID_INDEX);

//得到联系人头像Bitamp

Bitmap contactPhoto = null;

//photoid

大于0

表示联系人有头像

如果没有给此人设置头像则给他一个默认的

if(photoid > 0 ) {

Uri uri

=pendedId(T_URI,contactid);

InputStream input =

ntactPhotoInputStream(resolver, uri);

contactPhoto =

Stream(input);

}else {

contactPhoto =

Resource(getResources(),

t_photo);

}

(contactName);

(phoneNumber);

(contactPhoto);

}

();

}

}

/**得到手机SIM卡联系人人信息**/

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

private void getSIMContacts() {

ContentResolver resolver =

tentResolver();

//

获取Sims卡联系人

Uri uri = ("content://icc/adn");

Cursor phoneCursor = (uri,

PHONES_PROJECTION, null, null,

null);

if (phoneCursor != null) {

while (Next()) {

//

得到手机号码

String phoneNumber =

ing(PHONES_NUMBER_INDEX);

//

当手机号码为空的或者为空字段

跳过当前循环

if (y(phoneNumber))

continue;

//

得到联系人名称

String contactName = phoneCursor

.getString(PHONES_DISPLAY_NAME_INDEX);

//Sim卡中没有联系人头像

(contactName);

(phoneNumber);

}

();

}

}

class MyListAdapter extends BaseAdapter {

public MyListAdapter(Context context) {

mContext = context;

}

public int getCount() {

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

//设置绘制数量

return ();

}

@Override

public boolean areAllItemsEnabled() {

return false;

}

public Object getItem(int position) {

return position;

}

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView,

ViewGroup parent) {

ImageView iamge = null;

TextView title = null;

TextView text = null;

if (convertView == null) {

convertView =

(mContext).inflate(

ist, null);

iamge = (ImageView)

ewById(_image);

title = (TextView)

ewById(_title);

text = (TextView)

ewById(_text);

}

//绘制联系人名称

t((position));

//绘制联系人号码

t((position));

//绘制联系人头像

geBitmap((position));

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

return convertView;

}

}

}

208

列表的布局文件

1

2

3

4

5

6

7

xmlns:android="/apk/res/andro8

id"

9

android:layout_width="fill_parent"

1android:layout_height="wrap_content">

0

1 android:layout_width="40dip"

1

android:layout_height="40dip" />

1

2

android:layout_width="fill_parent"

1android:layout_height="wrap_content"

3

android:layout_toRightOf="@+id/color_image"

1 android:layout_alignParentBottom="true"

4

android:layout_alignParentRight="true"

1android:singleLine="true"

5

android:ellipsize="marquee"

1 android:textSize="15dip" />

6

1 android:layout_width="fill_parent"

7

android:layout_height="wrap_content"

1 android:layout_toRightOf="@+id/color_image"

8

android:layout_below="@+id/color_title"

1 android:layout_alignParentBottom="true"

9

android:layout_alignParentRight="true"

2 android:singleLine="true"

0

android:ellipsize="marquee"

2 android:textSize="20dip" />

1

22

23

源代码下载:

点击链接下载Android软件开发之获取通讯录联系人信息

发布评论

评论列表 (0)

  1. 暂无评论