您的位置:首页 > 移动开发 > Android开发

android中判断sim卡状态和读取联系人资料的方法

2011-06-07 16:14 411 查看
在写程序中,有时候可能需要获取sim卡中的一些联系人资料。在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息。

读取的代码如下:

package
com.android.test;
import
android.app.Activity;
import
android.content.Context;
import
android.content.Intent;
import
android.database.Cursor;
import
android.net.Uri;
import
android.os.Bundle;
import
android.telephony.TelephonyManager;
import
android.widget.TextView;
public
class
PhoneTest
extends
Activity {
private
TextView mTextView;
protected
Cursor mCursor =
null
;
private
TelephonyManager mTelephonyManager;
private
String mString =
""
;
 
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView)findViewById(R.id.text);
mTextView.setTextSize(
20
.3f);
isSimExist();
if
(getSimState() == TelephonyManager.SIM_STATE_READY){
mString +=
"卡存在\n"
;
getSimContacts(
"content://icc/adn"
); //一般用这一条,如果这条不行的话可以试试下面的一条。
getSimContacts(
"content://sim/adn"
);//此种读法在我们手机里不能读取,所以,还是用上个uri比较好。
}
mTextView.setText(mString);
}
 
private
void
getSimContacts(String str){
Intent intent =
new
Intent();
intent.setData(Uri.parse(str));
Uri uri = intent.getData();
mCursor = getContentResolver().query(uri,
null
,
null
,
null
,
null
);
if
(mCursor ==
null
){
mString +=
"不能从"
+ str +
"读数据\n"
;
return
;
}
mString +=
"第一列:"
+ mCursor.getColumnName(
0
) +
"\n"
;
mString +=
"第二列:"
+ mCursor.getColumnName(
1
) +
"\n"
;
mString +=
"第三列:"
+ mCursor.getColumnName(
2
) +
"\n"
;
mString +=
"第四列:"
+ mCursor.getColumnName(
3
) +
"\n"
;
mString +=
"列数:"
+ mCursor.getColumnCount() +
"\n"
;
mString +=
"行数:"
+ mCursor.getCount() +
"\n"
;
if
(mCursor !=
null
) {
while
(mCursor.moveToNext()) {
// 取得联系人名字
int
nameFieldColumnIndex = mCursor.getColumnIndex(
"name"
);
mString +=mCursor.getString(nameFieldColumnIndex)+
""
;
// 取得电话号码
int
numberFieldColumnIndex = mCursor
.getColumnIndex(
"number"
);
mString +=mCursor.getString(numberFieldColumnIndex)+
""
;
// 取得邮箱
int
emailsFieldColumnIndex = mCursor
.getColumnIndex(
"emails"
);
mString +=mCursor.getString(emailsFieldColumnIndex)+
""
;
// 取得id
int
idFieldColumnIndex = mCursor
.getColumnIndex(
"_id"
);
mString +=mCursor.getString(idFieldColumnIndex)+
"\n"
;
}
}
mString +=mCursor + 
"\n"
;
mCursor.close();
}
 
private
int
getSimState(){
return
mTelephonyManager.getSimState();
}
 
private
void
isSimExist(){
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
 
int
simState = mTelephonyManager.getSimState();
 
switch
(simState) {
 
case
TelephonyManager.SIM_STATE_ABSENT:
 
mString =
"无卡"
;
 
// do something
 
break
;
 
case
TelephonyManager.SIM_STATE_NETWORK_LOCKED:
 
mString =
"需要NetworkPIN解锁"
;
 
// do something
 
break
;
 
case
TelephonyManager.SIM_STATE_PIN_REQUIRED:
 
mString =
"需要PIN解锁"
;
 
// do something
 
break
;
 
case
TelephonyManager.SIM_STATE_PUK_REQUIRED:
 
mString =
"需要PUN解锁"
;
 
// do something
 
break
;
 
case
TelephonyManager.SIM_STATE_READY:
 
mString =
"良好"
;
 
// do something
 
break
;
 
case
TelephonyManager.SIM_STATE_UNKNOWN:
 
mString =
"未知状态"
;
 
// do something
 
break
;
 
}
 
mTextView.setText(mString);
}
 
}
main.xml布局文件如下:

<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
ScrollView
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
LinearLayout
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
TextView
android:id
=
"@+id/text"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"@string/hello"
/>
</
LinearLayout
>
</
ScrollView
>
</
LinearLayout
>
同时还要在AndroidManefist.xml中添加读sim卡的权限,如下:

<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
manifest
xmlns:android
=
"http://schemas.android.com/apk/res/android"
  
package
=
"com.android.test"
  
android:versionCode
=
"1"
  
android:versionName
=
"1.0"
>
<
application
android:icon
=
"@drawable/icon"
android:label
=
"@string/app_name"
>
<
activity
android:name
=
".PhoneTest"
  
android:label
=
"@string/app_name"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.MAIN"
/>
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
</
intent-filter
>
</
activity
>
</
application
>
<
uses-permission
android:name
=
"android.permission.READ_CONTACTS"
></
uses-permission
>
</
manifest
>
以后一定会用到。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: