android读取短信示例分享
packagecom.homer.sms;
importjava.sql.Date;
importjava.text.SimpleDateFormat;
importandroid.app.Activity;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteException;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.widget.ScrollView;
importandroid.widget.TableLayout;
importandroid.widget.TextView;
publicclasssmsReadextendsActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
TextViewtv=newTextView(this);
tv.setText(getSmsInPhone());
ScrollViewsv=newScrollView(this);
sv.addView(tv);
setContentView(sv);
}
publicStringgetSmsInPhone(){
finalStringSMS_URI_ALL="content://sms/";
finalStringSMS_URI_INBOX="content://sms/inbox";
finalStringSMS_URI_SEND="content://sms/sent";
finalStringSMS_URI_DRAFT="content://sms/draft";
finalStringSMS_URI_OUTBOX="content://sms/outbox";
finalStringSMS_URI_FAILED="content://sms/failed";
finalStringSMS_URI_QUEUED="content://sms/queued";
StringBuildersmsBuilder=newStringBuilder();
try{
Uriuri=Uri.parse(SMS_URI_ALL);
String[]projection=newString[]{"_id","address","person","body","date","type"};
Cursorcur=getContentResolver().query(uri,projection,null,null,"datedesc"); //获取手机内部短信
if(cur.moveToFirst()){
intindex_Address=cur.getColumnIndex("address");
intindex_Person=cur.getColumnIndex("person");
intindex_Body=cur.getColumnIndex("body");
intindex_Date=cur.getColumnIndex("date");
intindex_Type=cur.getColumnIndex("type");
do{
StringstrAddress=cur.getString(index_Address);
intintPerson=cur.getInt(index_Person);
Stringstrbody=cur.getString(index_Body);
longlongDate=cur.getLong(index_Date);
intintType=cur.getInt(index_Type);
SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
Dated=newDate(longDate);
StringstrDate=dateFormat.format(d);
StringstrType="";
if(intType==1){
strType="接收";
}elseif(intType==2){
strType="发送";
}else{
strType="null";
}
smsBuilder.append("[");
smsBuilder.append(strAddress+",");
smsBuilder.append(intPerson+",");
smsBuilder.append(strbody+",");
smsBuilder.append(strDate+",");
smsBuilder.append(strType);
smsBuilder.append("]\n\n");
}while(cur.moveToNext());
if(!cur.isClosed()){
cur.close();
cur=null;
}
}else{
smsBuilder.append("noresult!");
}//endif
smsBuilder.append("getSmsInPhonehasexecuted!");
}catch(SQLiteExceptionex){
Log.d("SQLiteExceptioningetSmsInPhone",ex.getMessage());
}
returnsmsBuilder.toString();
}
}
记得在AndroidManifest.xml中加入android.permission.READ_SMS这个permission
<uses-permissionandroid:name="android.permission.READ_SMS"/>
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android 浏览器 开发,Android 浏览器的开发实例分享
- android 空间分享到朋友圈,Android开发之微信分享到好友,朋友圈
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- Android SDK安装及配置模拟器[通俗易懂]
- android定时器取消,Android定时器崩溃取消
- Android Jetpack WorkManager | Android 中文教学视频
- Android保存图片到相册(适配android 10以下及以上)
- Android注册表_手机注册表文件在哪里
- 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )
- 【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )
- 【Android 组件化】从模块化到组件化
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑪ ( Gradle 任务分组 | 为自定义 Gradle 任务指定分组 | 为自定义 Gradle任务指定任务描述 | 代码示例 )
- 【Android Gradle 插件】Gradle 基础配置 ② ( Gradle 空白项目构建示例演示 )
- [android] 手机卫士读取联系人详解手机开发
- Freeline–Android平台上的秒级编译方案详解手机开发
- android调用服务端的js详解手机开发
- Google Android 开发环境工具 Android Studio 0.8.12
- android avd 连接外部服务器的方法
- android版本检测Android程序的版本检测与更新实现介绍
- 探讨:如何修改Android超时休眠时间
- Android桌面Widget开发要点解析(时间日期Widget)
- android计算器代码示例分享
- android使用多线程更新ui示例分享
- 从零开始学android实现计算器功能示例分享(计算器源码)
- android配合viewpager实现可滑动的标签栏示例分享
- android实现在横竖屏切换时页面信息不被重置的示例分享
- android实现widget时钟示例分享
- android文件上传示例分享(android图片上传)