是有一種方法,但不幸的是,因爲文的部署tKat不再那麼容易了。要在版本> Jelly Bean上工作,您必須將應用程序作爲默認SMS應用程序運行,即修改和abortBroadcast()。對於4.3及以下,創建一個廣播接收器,做類似如下:
public void onReceive(Context context, Intent intent) {
// Get the SMS map from Intent
Bundle extras = intent.getExtras();
String messages = "";
if (extras != null) {
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);
// Get ContentResolver object for pushing encrypted SMS to the incoming folder
ContentResolver contentResolver = context.getContentResolver();
for (int i = 0; i < smsExtra.length; ++i) {
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
String body = sms.getMessageBody().toString();
String address = sms.getOriginatingAddress();
// Here is where you modify the body of the message!
messages += "SMS from " + address + " :\n";
messages += body + "\n";
putSmsToDatabase(contentResolver, sms);
}
}
}
private void putSmsToDatabase(ContentResolver contentResolver, SmsMessage sms) {
// Create SMS row
ContentValues values = new ContentValues();
values.put(ADDRESS, sms.getOriginatingAddress());
values.put(DATE, sms.getTimestampMillis());
values.put(READ, MESSAGE_IS_NOT_READ);
values.put(STATUS, sms.getStatus());
values.put(TYPE, MESSAGE_TYPE_INBOX);
values.put(SEEN, MESSAGE_IS_NOT_SEEN);
try {
values.put(BODY, sms.getMessageBody()); // May need sms.getMessageBody.toString()
}
catch (Exception e) {
e.printStackTrace();
}
// Push row into the SMS table
contentResolver.insert(Uri.parse(SMS_URI), values);
}
從here
獲得此信息差點忘了... ..常量
public static final String SMS_EXTRA_NAME = "pdus";
public static final String SMS_URI = "content://sms";
public static final String ADDRESS = "address";
public static final String PERSON = "person";
public static final String DATE = "date";
public static final String READ = "read";
public static final String STATUS = "status";
public static final String TYPE = "type";
public static final String BODY = "body";
public static final String SEEN = "seen";
public static final int MESSAGE_TYPE_INBOX = 1;
public static final int MESSAGE_TYPE_SENT = 2;
public static final int MESSAGE_IS_NOT_READ = 0;
public static final int MESSAGE_IS_READ = 1;
public static final int MESSAGE_IS_NOT_SEEN = 0;
public static final int MESSAGE_IS_SEEN = 1;
有ISN」在Android中做到這一點,謝天謝地。但是,您可以攔截SMS廣播並在必要時取消通知。 – 323go 2013-04-09 06:02:09
是的,有方法可以使用androdi原生代碼。安德這裏是鏈接,將幫助你開始:http://stackoverflow.com/questions/11435354/receiving-sms-on-android-app – 2013-04-09 06:10:55
也許Husam已經爲你解決了。你不清楚你想做什麼。你想編輯 - >保存 - >顯示它?所以唯一的短信將是你編輯的。或者,你想不想編輯短信收件箱中的真實短信? – 2013-04-09 08:15:23