前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android ContentResolver获取手机电话号码和短信内容

android ContentResolver获取手机电话号码和短信内容

作者头像
砸漏
发布2020-10-22 11:23:31
1.3K0
发布2020-10-22 11:23:31
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

通过ContentResolver 获取到手机的联系人跟手机短信信息并显示出来,供大家参考,具体内容如下

1、实现的代码:

代码语言:javascript
复制
package com.example.phone; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.PhoneLookup; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteException; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
public class MainActivity extends Activity implements OnClickListener{ 
private TextView text; 
private Button button; 
private Button sms; 
HashMap<String, Object  map = new HashMap<String, Object (); 
List<String  con = new ArrayList<String (); 
String msg;//联系人姓名+号码 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main);  
initUI();     
} 
private void initUI() { 
// TODO Auto-generated method stub  
text = (TextView)findViewById(R.id.text); 
button = (Button)findViewById(R.id.button);//获取手机电话号码 
button.setOnClickListener(this); 
sms = (Button)findViewById(R.id.sms);//获取手机短信信息 
sms.setOnClickListener(this); 
} 
@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
switch(v.getId()){ 
case R.id.button: 
getPhoneNumber();//获取手机电话号码 
break; 
case R.id.sms://获取手机短信内容 
getSmsMessage(); 
Map<String,Object  item = new HashMap<String,Object (); 
for(int i= 0;i<con.size();i++){ 
text.setText(item.put("con", con.get(i))+"");//仅显示一条 
System.out.println("ningshengcai:"+item.put("con", con.get(i)));//打印显示全部数据      
} 
break; 
default : 
break; 
} 
} 
/** 
* 获取手机联系人号码 
*/ 
public void getPhoneNumber(){ 
// smslist=getListView();  
//得到ContentResolver对象   
ContentResolver cr = getContentResolver();    
//取得电话本中开始一项的光标   
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);   
while (cursor.moveToNext())   
{   
// 取得联系人名字   
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);   
String name = cursor.getString(nameFieldColumnIndex);   
//name += (name);   
// 取得联系人ID   
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));   
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "+ contactId, null, null);     
// 取得电话号码(可能存在多个号码)   
while (phone.moveToNext())   
{   
String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
System.out.println(name+":"+strPhoneNumber);                     
msg += name+":"+strPhoneNumber+"\n"; 
text.setText(msg); 
}       
phone.close();   
}   
cursor.close();  
} 
/** 
* 获取短信信息 
* @return smsBuilder.toString() 
*/ 
@SuppressWarnings("unused") 
public String getSmsMessage(){   
final String SMS_URI_ALL  = "content://sms/";    
final String SMS_URI_INBOX = "content://sms/inbox";   
final String SMS_URI_SEND = "content://sms/sent";   
final String SMS_URI_DRAFT = "content://sms/draft";   
StringBuilder smsBuilder = new StringBuilder();   
try{   
ContentResolver cr = getContentResolver();   
String[] projection = new String[]{"_id", "address", "person",    
"body", "date", "type"};   
Uri uri = Uri.parse(SMS_URI_ALL);   
Cursor cur = cr.query(uri, projection, null, null, "date desc");   
if (cur.moveToFirst()) {   
String name;    
String phoneNumber;       
String smsbody;   
String date;   
String type;   
int nameColumn = cur.getColumnIndex("person"); //发送人  
int phoneNumberColumn = cur.getColumnIndex("address");  //号码 
int smsbodyColumn = cur.getColumnIndex("body");  //内容 
int dateColumn = cur.getColumnIndex("date");  //时间 
int typeColumn = cur.getColumnIndex("type");  //接收还是发送 
do{   
name = cur.getString(nameColumn);          
phoneNumber = cur.getString(phoneNumberColumn);   
smsbody = cur.getString(smsbodyColumn);   
SimpleDateFormat dateFormat = new SimpleDateFormat(   
"yyyy-MM-dd hh:mm:ss");   
Date d = new Date(Long.parseLong(cur.getString(dateColumn)));   
date = dateFormat.format(d);   
int typeId = cur.getInt(typeColumn);   
if(typeId == 1){   
type = "接收";   
} else if(typeId == 2){   
type = "发送";   
} else {   
type = "";   
}   
//System.out.println("nsc :"+name+":"+phoneNumber+":"+smsbody+":"+date+":"+type +"\n"); 
String smsmsg = name+":"+phoneNumber+":"+smsbody+":"+date+":"+type+"\n"; 
con.add(smsmsg);          
if(smsbody == null) smsbody = "";    
}while(cur.moveToNext());   
} else {   
smsBuilder.append("no result!");   
}   
smsBuilder.append("getSmsInPhone has executed!");   
} catch(SQLiteException ex) {   
Log.d("SQLiteException in getSmsInPhone", ex.getMessage());   
}   
return smsBuilder.toString();   
}   
} 

2、代码布局:

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".MainActivity"   
<Button  
android:id="@+id/button" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/ph"/  
<Button  
android:id="@+id/sms" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/sms"/  
<ScrollView 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
<TextView 
android:id="@+id/text" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"       
android:text="@string/hello_world" /  
</ScrollView  
</LinearLayout  

3、需要用到的权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_CONTACTS" /   
<uses-permission android:name="android.permission.WRITE_SMS" /   
<uses-permission android:name="android.permission.READ_SMS" /   
<uses-permission android:name="android.permission.READ_PHONE_STATE" /  

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档