andoid 打包短信发送到gmail邮箱
andriod短信整合备份发送到gmail邮箱,需要在andoid手机配置好gmail邮箱
github代码 https://github.com/zhwj184/smsbackup
查看效果:
可以把几天的短信打包发送到自己的gmail邮箱,可以定时备份下短信。
主要代码:
package org.smsautobackup; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.app.ActivityManager; import android.content.ContentResolver; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date curDate = new Date(System.currentTimeMillis());// 获取当前时间 Date lastDate = new Date(curDate.getYear(), curDate.getMonth(), curDate.getDate() - 1); ((EditText) findViewById(R.id.endDate)).setText(formatter .format(curDate)); ((EditText) findViewById(R.id.startDate)).setText(formatter .format(lastDate)); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { sendSms(getSmsInPhone()); } }); // Button btn1 = (Button) findViewById(R.id.button2); // btn1.setOnClickListener(new View.OnClickListener() { // public void onClick(View v) { // EditText txtContent = (EditText) MainActivity.this.findViewById(R.id.editText1); // AutoBackupService.receiver = txtContent.getText().toString(); // startService(new Intent(MainActivity.this, // AutoBackupService.class)); // } // }); } private String getSmsInPhone() { StringBuilder smsBuilder = new StringBuilder(); EditText startDatePicker = (EditText) findViewById(R.id.startDate); EditText endDatePicker = (EditText) findViewById(R.id.endDate); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date startDate = df.parse(startDatePicker.getText().toString()); Date endDate = df.parse(endDatePicker.getText().toString()); ContentResolver cr = getContentResolver(); return SmsUtil.getSmsInPhone(startDate, endDate, cr); }catch(Exception e){ Log.d("Exception in getSmsInPhone", e.getMessage()); } return ""; } @Override public 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; } protected void onDestroy() { super.onDestroy(); ActivityManager activityMgr= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); activityMgr.restartPackage(getPackageName()); } private void sendSms(String content) { Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType("plain/text"); // intent.setType("message/rfc822") ; // 真机上使用这行 EditText txtContent = (EditText) findViewById(R.id.editText1); String[] strEmailReciver = new String[] { txtContent.getText() .toString() }; intent.putExtra(android.content.Intent.EXTRA_EMAIL, strEmailReciver); // 设置收件人 EditText startDatePicker = (EditText) findViewById(R.id.startDate); EditText endDatePicker = (EditText) findViewById(R.id.endDate); intent.putExtra(Intent.EXTRA_SUBJECT, "[" + startDatePicker.getText().toString() + "至" + endDatePicker.getText().toString() + "]短信备份"); intent.putExtra(android.content.Intent.EXTRA_TEXT, content); // 设置内容 startActivity(Intent.createChooser(intent, "send SMS to your mail success")); } }
package org.smsautobackup; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.net.Uri; import android.util.Log; import android.widget.EditText; public class SmsUtil { // android获取短信所有内容 public static String getSmsInPhone(Date startDate,Date endDate,ContentResolver cr) { final String SMS_URI_ALL = "content://sms/"; final String SMS_URI_INBOX = "content://sms/inbox"; final String SMS_URI_SEND = "content://sms/sent"; final String SMS_URI_DRAFT = "content://sms/draft"; StringBuilder smsBuilder = new StringBuilder(); try { String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; Uri uri = Uri.parse(SMS_URI_ALL); Cursor cur = cr.query(uri, projection, null, null, "date desc"); if (cur.moveToFirst()) { String name; String phoneNumber; String smsbody; String date; String type; int nameColumn = cur.getColumnIndex("person"); int phoneNumberColumn = cur.getColumnIndex("address"); int smsbodyColumn = cur.getColumnIndex("body"); int dateColumn = cur.getColumnIndex("date"); int typeColumn = cur.getColumnIndex("type"); do { name = cur.getString(nameColumn); phoneNumber = cur.getString(phoneNumberColumn); smsbody = cur.getString(smsbodyColumn); SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss"); Date d = new Date(Long.parseLong(cur.getString(dateColumn))); if (d.before(startDate) || d.after(endDate)) { continue; } date = dateFormat.format(d); int typeId = cur.getInt(typeColumn); if (typeId == 1) { type = "接收"; } else if (typeId == 2) { type = "发送"; } else { type = ""; } smsBuilder.append("["); smsBuilder.append(name==null?"":name + ","); smsBuilder.append(phoneNumber + ","); smsBuilder.append(smsbody + ","); smsBuilder.append(date + ","); smsBuilder.append(type); smsBuilder.append("]\n"); if (smsbody == null) smsbody = ""; } while (cur.moveToNext()); } else { smsBuilder.append("no result!"); } smsBuilder.append("getSmsInPhone has executed!"); } catch (SQLiteException ex) { Log.d("SQLiteException in getSmsInPhone", ex.getMessage()); } return smsBuilder.toString(); } }
其他配置请到github上看。