如何从消息文件导入到android
问题描述:
我正在开发一个应用程序,它备份了android文本消息,我能够将文本消息保存在xml文件中,现在我想将这个文件消息导回到android。 我don'nt知道如何做到这一点, 任何帮助将非常感激如何从消息文件导入到android
答
- 读取和解析xml文件:
XmlPullParserFactory pullParserFactory; try { pullParserFactory = XmlPullParserFactory.newInstance(); XmlPullParser parser = pullParserFactory.newPullParser(); InputStream in_s = getApplicationContext().getAssets().open("temp.xml"); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(in_s, null); parseXML(parser); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
{
ArrayList<SMSMessage> smsMessages = null;
int eventType = parser.getEventType(); SMSMessage smsMessage = null;
while (eventType != XmlPullParser.END_DOCUMENT){
String name = null;
switch (eventType){
case XmlPullParser.START_DOCUMENT:
smsMessages = new ArrayList();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if (name == "message"){
smsMessage = new SMSMessage();
} else if (smsMessage != null){
if (name == "address"){
smsMessage.address = parser.nextText();
} else if (name == "body"){
smsMessage.body = parser.nextText();
}
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
if (name.equalsIgnoreCase("message") && smsMessage != null){
smsMessages.add(smsMessage);
}
}
eventType = parser.next();
}
}
- 要将消息写入手机内存:
活动:
for(SMSMessage aMessage : smsMessages){
ContentValues my_values = new ContentValues();
my_values.put("address", aMessage.address);
my_values.put("body", aMessage.body);
getContentResolver().insert(Uri.parse("content://sms/inbox"), my_values);
}
清单:
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
P.S.由于你没有告诉我们这个数据结构应该包含什么(你如何使用所有的消息来构造你的xml文件),所以没有编译我自己,错误显然是存在的+ SMSMessage类应该被实现
+0
谢谢,我已经做到了这一点 –
请阅读这里:http ://stackoverflow.com/questions/642076/how-to-save-sms-to-inbox-in-android –