获取手机的短信内容和联系人信息

来源:互联网 发布:a股人工智能概念股 编辑:程序博客网 时间:2024/05/16 08:17
获取短信内容:

编写一个广播接收器(ShortMessageReceiver),其中onReceive方法的代码如下:

public void onReceiver(Context context,Intent intent){ Bundle bundle = intent.getExtras();  if (bundle != null){   //获得收到的短信数据   Object[] objArray  (Object[]) bundle.get("pdus");   //定义封装短信内容的SmsMessage对象数组   SmsMessage[] messages=new SmsMessage[objArray.length];   //循环处理收到的所有短信        for (int i=0;i<objArray.length;i++){           //将每条短信数据转换成SmsMessage对象           messages[i] =SmsMessage.createFormPdu((byte[]) objArray[i]);           //获得发送短信的电话号码和短信内容           String s ="手机号:"+messages[i].getDisplayMessageBody();           //显示发送短信的电话号码和短信内容           Toast.makeText(Context,s,Toast.LENGTH_LONG).show();         }   }}

然后在AndroidMainfest.xml文件中定义ShortMessageReceiver时添加短信广播Action即可,代码如下:

</pre><pre name="code" class="html"><receiver android:name=".ShortMessageReceiver">    android:enabled="true"    <intent-filter>       <action android:name="android.provider.Telephony.SMS_RECEIVED"/>    </intent-filter> </receiver>




读取联系人信息:
使用Content Provider可以读取联系人信息。如下的代码读取了所有联系人信息,并将联系人名称显示在ListView组件中:

ListView listView = (ListView) findViewById(R.id.listview); //查询系统中所有联系人 Cursor cursor = getContentResolver().query(                     ContactsContacts.CONTENT_URI,null,null,null,null);  //根据cursor创建SimpleCursorAdapter对象  SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor,new String[]
                        { CountactsContract.Contacts.DISPLAY_NAME},new int[]                        {android.R.id.text1}  );   //在ListView控件中显示联系人列表  listView.setAdapter(simpleCursorAdapter);


读取联系人信息时,要在AndroidMainfest.xml文件中设置如下权限:
   <uses-permission android:name="android.permission.READ_CONTACTS"/>


0 0