Evet orada bir yoldur, ama maalesef Ki rolloutunda beri tKat o kadar kolay değil. Sürümler> Jelly Bean üzerinde çalışmak için, uygulamanızın varsayılan SMS uygulaması olarak çalıştırılması gerekir, yani değişiklik yapmak ve abortBroadcast(). 4.3 ve aşağıda, bir yayın alıcısı oluşturun ve aşağıdaki gibi bir şey yapmak: Bu bilgi
here elde edilmiştir
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);
}
Az daha unutuyordum
... sabitleri ..
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;
Orada değil' Android'de bunu yapmanın bir yolu, şükürler olsun. Ancak, SMS yayını engelleyebilir ve yapmanız gerekiyorsa bildirimi kaldırabilirsiniz. – 323go
Evet, androdi Native kodunu kullanarak bunu yapmak için bir yol var. Ande burada başlamanıza yardımcı olacak bir link: http://stackoverflow.com/questions/11435354/receiving-sms-on-android-app –
Belki de Husam sizin için bir çözüm buldu.Ne yapmak istediğin belli değil. Düzenlemek istiyor musunuz -> kaydet -> göster? Yani tek sms senin düzenlenmiş olacak. Veya düzenlenmiş sms mesajını sms-inbox'ta gerçek olanı düzenlemeden tost olarak göstermek ister misiniz? –