[java] view plaincopy
安卓资料导出备份 v1.0
该软件支持导入导出手机通讯录与短信,可以通过导出进行备份,还可以直接 导出信息。导出文件存储在手机和SD卡里双重保险。
下一版本设计:
1、添加备忘录导入导出
2、优化导入导出时间
3、添加更多导出选项
4、支持网络化传送导出文件,互相导入
部分代码:
导出通讯录
[java]
public void GetTongXun() throws IOException
{
ContentResolver resolver = this.getContentResolver();
Uri uri = Uri.parse("content://com.android.contacts/contacts");
Cursor cursor = resolver.query(uri, new String[]{Data._ID}, null, null, null);
File file = CreatFile(dir+"通讯录.txt");
FileOutputStream outputStream = new FileOutputStream(file);
FileOutputStream fos = null;
fos = openFileOutput("通讯录.txt",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
while(cursor.moveToNext())
{
StringBuilder buf = new StringBuilder();
int id = cursor.getInt(0);//获得id并且在data中寻找数据
uri = Uri.parse("content://com.android.contacts/contacts/"+id+"/data"); //如果要获得data表中某个id对应的数据,则URI为content://com.android.contacts/contacts/#/data
Cursor cursor2 = resolver.query(uri, new String[]{Data.DATA1,Data.MIMETYPE,Data.DATA10}, null,null, null); //data1存储各个记录的总数据,mimetype存放记录的类型,如电话、email等
String phone = null;
while(cursor2.moveToNext())
{
String data = cursor2.getString(cursor2.getColumnIndex("data1"));
if(cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/name") && cursor2.getString(cursor2.getColumnIndex("data10")).equals("2") ){ //如果是名字
buf.append(data);
if (phone != null) buf.append(phone);
}
else if(cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/phone_v2")){//如果是电话
phone = new String(" "+data+"\n");
}
}
String str = buf.toString();
try {
outputStream.write(str.getBytes());
fos.write(str.getBytes());
} catch (IOException ex) {}
}
try {
outputStream.close();
fos.close();
} catch (IOException ex) {}
new AlertDialog.Builder(this).setMessage("成功导出通讯录!").show();
}
导出短信
[java]
public void OutDuanxin() throws IOException
{
Uri uri = Uri.parse("content://sms/");
smsContent sc = new smsContent(this,uri);
List<smsInfo> infos = sc.getSmsInfo();
List<smsInfo> realinfos = sc.getRealSmsInfo();
File file = CreatFile(dir+"短信.txt");
FileOutputStream outputStream = new FileOutputStream(file);
FileOutputStream fos = null;
fos = openFileOutput("短信.txt",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
File realfileFile = CreatFile(dir+"duanxin.yyqf");
FileOutputStream realoutputStream = new FileOutputStream(realfileFile);
FileOutputStream realfos = null;
realfos = openFileOutput("duanxin.yyqf",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
String string = new String();
String realString = new String();
for (int i=0;i<infos.size();i++)
{
string+=infos.get(i).getName();
string+="\n号码:"+infos.get(i).getPhoneNumber();
string+="\n日期:"+infos.get(i).getDate();
string+="\n消息:"+infos.get(i).getSmsbody();
string+="\n====================================\n";
realString+=realinfos.get(i).getPhoneNumber()+"\n";
realString+=realinfos.get(i).getSmsbody()+"\n";
realString+= ".!@#$%^&*().[].yyqf\n" + realinfos.get(i).getDate()+"\n";
realString+=realinfos.get(i).getType()+"\n";
}
try {
fos.write(string.getBytes());
outputStream.write(string.getBytes());
realfos.write(realString.getBytes());
realoutputStream.write(realString.getBytes());
} catch (Exception e) {}
try {
outputStream.close();
fos.close();
realfos.close();
realoutputStream.close();
} catch (IOException ex) {}
new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_info).setMessage("成功导出短信!").show();
}