(内容提供者)备份短信和添加短信
1. 访问短信的数据库
2. Android/data/data----------------------------数据库位置
3. 查看短信的内容提供者:Android源码—packages—providers—(根据应用包名找)TelephonyProvider—把文件夹导入eclipse(Import Projects)
4. 查看uri-------唯一标示; uri: content://sms/
5. 因为要读写SD卡,所以要配置权限;------------读写SD卡权限
还有读写短信的权限
6. 保存到本地,一般用xml;
备份短信
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 备份短信* @param v*/public void backupSms(View v) {// 1. 查出所有的短信Uri uri = Uri.parse("content://sms/");ContentResolver resolver = getContentResolver();Cursor cursor = resolver.query(uri, new String[]{"_id", "address", "date", "type", "body"}, null, null, null);if(cursor != null && cursor.getCount() > 0) {List<SmsInfo> smsList = new ArrayList<SmsInfo>();SmsInfo sms;while(cursor.moveToNext()) { // 控制游标结果集的指针向下移一位, 当到最后一位, 停止.返回falsesms = new SmsInfo();sms.setId(cursor.getInt(0)); // 设置短信的idsms.setAddress(cursor.getString(1)); // 设置短信的号码sms.setDate(cursor.getLong(2)); // 设置短信的日期sms.setType(cursor.getInt(3)); // 设置短信的类型, 接收1还是发送2sms.setBody(cursor.getString(4)); // 设置短信的内容smsList.add(sms);}cursor.close();// 2. 序列化到本地writeToLocal(smsList);}}/*** 序列化到本地*/private void writeToLocal(List<SmsInfo> smsList) {try {XmlSerializer serializer = Xml.newSerializer(); // 得到序列化对象// 指定输出位置FileOutputStream fos = new FileOutputStream("/mnt/sdcard/sms.xml");serializer.setOutput(fos, "utf-8");serializer.startDocument("utf-8", true);serializer.startTag(null, "smss");for (SmsInfo smsInfo : smsList) {serializer.startTag(null, "sms");serializer.attribute(null, "id", String.valueOf(smsInfo.getId()));// 写号码serializer.startTag(null, "address");serializer.text(smsInfo.getAddress());serializer.endTag(null, "address");// 写时间serializer.startTag(null, "date");serializer.text(String.valueOf(smsInfo.getDate()));serializer.endTag(null, "date");//写类型serializer.startTag(null, "type");serializer.text(String.valueOf(smsInfo.getType()));serializer.endTag(null, "type");// 写内容serializer.startTag(null, "body");serializer.text(smsInfo.getBody());serializer.endTag(null, "body");serializer.endTag(null, "sms");}serializer.endTag(null, "smss");serializer.endDocument();Toast.makeText(this, "备份成功", 0).show();} catch (Exception e) {Toast.makeText(this, "备份失败", 0).show();e.printStackTrace();}}
}
添加短信
1. 写入短信的权限;
2. 自己给自己发短信;
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 停30秒钟, 想系统短信数据库中写一条短信new Thread(new Runnable() {@Overridepublic void run() {SystemClock.sleep(10 * 1000);Uri uri = Uri.parse("content://sms/"); // 操作sms表的uriContentValues values = new ContentValues();values.put("address", "95555");values.put("type", "1");values.put("body", "您的尾号为8890的账户, 收到100, 000, 000, 000.00元的转账. 活期余额为: 899, 777, 000, 111, 000.00元");getContentResolver().insert(uri, values);}}).start();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
(内容提供者)备份短信和添加短信相关推荐
- Day10安卓 专高 day10 ContentProvider内容提供者
Day10安卓 专高 day10 ContentProvider内容提供者 安卓 专高 day10 ContentProvider内容提供者 ContentProvider 的使用 内容提供者,就是给 ...
- Android备份和添加短信
手机发送成功的,没有成功的,接受的短信都存放在手机自带的数据库中. 现在想要备份一下这个短信,需要访问这个数据库,然后查询所有的短信.就需要内容提供者(短信). 首先要找到内容提供者的uri.
- Android内容提供者(群发短信)
工程目录: Manifests添加读取联系人权限 <uses-permission android:name="android.permission.READ_CONTACTS&quo ...
- android studio内容提供者(查看短信的猫)点击查看短信,闪退,无法显示短信内容。(附程序源代码,以及解决办法)
报错的问题: Permission Denial: readingcom.android.providers.telephony.SmsProvider uri content://sms/ 找到问题 ...
- 内容提供者ContentProvider, 读写加联系人,读写通话记录,监听收到的短信,获取之前已经收到的短信
1.什么是内容提供者? 首先我们必须要明白的是ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用比较少.ContentProvider为不同的软 ...
- 再也不怕短信丢失了---短信备份
大家晚上好,这讲给大家分享的是安全有效的demo短信备份.原理是这样的,在系统中找到短信信息数据库,再将数据库里面的信息保存到其他可知的地方,这个地方指的是新建的小应用私有目录里,用到的知识点有内容提 ...
- 群发短信时添加网址链接的作用、劣势分别有哪些?
你应该收到过一些企业商家发送的短信吧?如果里面带网址链接,你敢点吗?这是当下很多手机用户遇到过的问题,也是商家需要考虑的问题.虽说现在手机用户都在吐槽短信太烦人,但不可否认的是,短信作为性价比较高的营 ...
- Abp Core 添加短信验证码登录(动态密码登录)
交流QQ群:555913397 有什么问题可以加群大家一起交流 Abp Core 添加短信验证码登录(动态密码登录) 现目前我国网站的已经很少使用电子邮箱了,基本上都是手机号作为账号,有时候粗心的用户 ...
- 10月第2周业务风控关注|内容安全惹的祸?子弹短信和斗鱼APP同一天下架
易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.内容安全惹的祸?子弹短信和斗 ...
最新文章
- idea 一直在build_CEO季度表彰团队| 我们一直在做最酷的事
- 探索.NET平台中的SIMD内在函数Vector
- github迁移到gitee相关问题
- STM32的学习记录--2.WiFi模块的使用
- Cortex-M3存储器系统
- oracle 更新flwid,Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
- 【python】导入HTMLTestRunner失败---报错ModuleNotFoundError: No module named ‘HTMLTestRunner‘
- 清理apache日志
- java微信刷卡支付demo_微信刷卡支付例子
- 晨风机器人回复词库_晨风qq机器人词库下载2015 最新完整版
- Android学习路之Button(按钮)与ImageButton(图像按钮)
- element -ui 返回顶部
- 性能测试 性能测试流程(一) 性能测试步骤是什么?性能测试常规流程说明
- 学习记录514@react使用antd选择器设置下拉菜单宽度
- win10部署milvus以图搜图2.0
- 织梦如何添html5播放器,织梦ckplayer视频播放器插件的介绍与使用
- 锐龙R3 4100 性能怎么样 相当于什么水平
- Tinker热更新与AndResGuard资源混淆的结合
- 随机验证码生成(生成一个含有n位随机数字的字符串)
- 主成分分析(R语言)
热门文章
- 1.安装EMQX服务器
- matlab实现图层线性光的代码,Photoshop图层混合模式之线性光模式分析
- 新AI时代序幕已拉开 不信请看这十四大例
- Java-面向对象编程
- java计算机毕业设计宠物救助网站的设计与实现源码+数据库+系统+lw文档+部署
- 腾讯产品快速尝鲜,蓝鲸智云社区版V6.1灰度测试开启
- ios获取设备信息,手机型号
- 微信小程序动态绑定class
- C# 读取PDF文本和图片
- 计算机一级总产量怎么算,excel表格数据增长百分比-Excel表格如何计算产量增减百分比?...