Android 读取与插入彩信
在 Android应用中读取彩信文件涉及到Android的一个数据库/data/data /com.android.providers.telephony/databases/mmssms.db和一个文件夹/data/data /com.android.providers.telephony/app_parts。要备份彩信,可以将这个数据库和文件夹拷贝到硬盘,但是在应用 中却不能通过openDatabase系列方法来读这个数据库,也不能通过直接打开文件来读取附件文件,因为你的应用不是它们的所有者,不能直接读取,而 要使用...
在 Android应用中读取彩信文件涉及到Android的一个数据库/data/data /com.android.providers.telephony/databases/mmssms.db和一个文件夹/data/data /com.android.providers.telephony/app_parts。要备份彩信,可以将这个数据库和文件夹拷贝到硬盘,但是在应用 中却不能通过openDatabase系列方法来读这个数据库,也不能通过直接打开文件来读取附件文件,因为你的应用不是它们的所有者,不能直接读取,而 要使用ContentProvider来读取。
1、读取mmssms.db数据库
彩信的标
、发送者号码、日期等数据存储在mmssms.db的pdu表中,要读取这个表可以使用系统提供的一个 ContentProvider,URI是“content://mms”。操作这个ContentProvider和操作数据库一样,这个 ContentProvider的结构也和pdu表的结构一样,Android文档对这些字段没有说明,但是可以通过将mmssms.db数据库备份到硬 盘上,然后再通过Sqlite Database Browser软件来查看分析
Android系统采用SQLite数据库方式存储所有接收到的短信,短信的SQLite数据库文件位于:
/data/data/com.android.providers.telephony/databases/mmssms.db
备份Android短信数据库到SD卡上,可以使用adb工具连接手机,然后使用如下命令
busybox cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard
如果busybox cp命令不行,还可以使用cat命令:
cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db
content://mms主要的几个字段如下:
_id:该条彩信的主键,对应着part表(ContentProvider的URI是content://mms/part,详见后)中的mid字段。
sub:该条彩信的标题
date:该条彩信的接收日期
下面的代码可以查询该CotnetProvider,得到一个cursor,并列出所有的列名。
Cursor cur = getContentResolver().query(Uri.parse("content://mms"),null, null, null, null);
String [] temp=cur.getColumnNames();
for (int i=0;i
= 0)
{
baos.write(buffer, 0, len);
len = is.read(buffer);
}
} catch (IOException e) {
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
}
}
这里得到的baos,就是附件文件。
3、声明permission
要在代码中使用content://mms,content://mms/part,content://sms等,还要在AndroidManifest.xml中注册premission,代码如下:
本文档为【Android 读取与插入彩信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。