博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中判断sim卡状态和读取联系人资料的方法【转】
阅读量:6802 次
发布时间:2019-06-26

本文共 4566 字,大约阅读时间需要 15 分钟。

 在写程序中,有时候可能需要获取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
>
 

 

转载于:https://www.cnblogs.com/ycmoon/archive/2011/06/07/2074050.html

你可能感兴趣的文章
arcEngine 10 C++ 坐标转换【坐标系的投影】
查看>>
Java6 WebService学习
查看>>
命名规则 : 匈牙利法则
查看>>
适用于单选的jQuery Auto-complete插件SelectToAutocomplete
查看>>
chrome下可用的Windows Media Player插件
查看>>
ubuntu 10.04 install oracle11g
查看>>
我的Windows 8下看漫画程序差不多可以用了
查看>>
rabbitmq使用__python客户端(消息接收者)
查看>>
如何实现一套鼠标键盘控制二台主机
查看>>
html5 手机页面
查看>>
【Java学习笔记】Java中关于tostring方法的误操作
查看>>
Ubuntu 配置VNC以及使用VNC连接时,无法显示系统菜单栏,解决方法
查看>>
开发人员应该对IIS理论层的知识了解的多一些~目录
查看>>
linux命令备份
查看>>
Lingo软件的使用
查看>>
【转】CSS经验分享:如何书写可维护的CSS代码
查看>>
substr(),mb_substr()及mb_strcut的区别和用法
查看>>
AS3.0中的反射
查看>>
lynn trigger
查看>>
读书笔记:C++中利用智能指针和值型类防止内存非法访问
查看>>