Sì, c'è un modo, ma purtroppo dal momento che il lancio di Ki Non è più così facile. Per lavorare sulle versioni> Jelly Bean è necessario che l'applicazione venga eseguita come applicazione SMS predefinita, ovvero che modifica e abortBroadcast(). Per 4.3 e di seguito, creare un ricevitore broadcast e fare qualcosa di simile al seguente:
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);
}
Questa informazione è stata ottenuta da here
Quasi dimenticavo ... le costanti ..
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;
Ci isn' Un modo per farlo in Android, grazie al cielo. Tuttavia, è possibile intercettare la trasmissione SMS e sopprimere la notifica, se necessario. – 323go
Sì, c'è modo di farlo utilizzando il codice nativo di androdi. Ande qui è il collegamento che ti aiuterà a iniziare: http://stackoverflow.com/questions/11435354/receiving-sms-on-android-app –
Forse Husam ha una soluzione per te.Non sei chiaro di cosa vuoi fare. Vuoi modificare -> salvare -> mostrarlo? Quindi l'unico sms sarà quello modificato. O vuoi mostrare il messaggio sms modificato come un brindisi, senza modificare quello reale nell'sms-inbox? –