2013-04-09 34 views
8

Gelen bir SMS mesajını engellemenin ve daha sonra kullanıcıya sunmadan önce değiştirmenin bir yolu var mı?Gelen SMS İletisini Durdur ve Değiştirin

  • iPhone/Andriod'da yerel olarak yapılabilir mi?
  • PhoneGap kullanılarak yapılabilir mi?
  • MonoTouch/Mono for Andriod kullanılarak yapılabilir mi?

Yukarıdakilerden herhangi birine evetse, bunun için bazı işaretçiler sağlayabilir misiniz? aşağıdaki gibi

Benim tercih çözüm öncelikli sırası:

şimdiden teşekkür ederiz

  • Yerli

    1. PhoneGap
    2. Mono !!

      DÜZENLEME: kişiler bu amacı nedir merak için

      , temelde ben sms görüntülediğinizde yüzden, elimden, içeriğe bağlı sms bir "etiket" gibi bir kelime koymak istiyorum sadece "blah blah blah" yerine "ÖNEMLİ: falan filan" gibi bir şey gör.

  • +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

    +1

    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 –

    +0

    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? –

    cevap

    1

    Elbette! Sonra kaydı güncelleştirmek /var/mobile/Library/SMS/sms.db

    CREATE TRIGGER AFTER INSERT ON message 
    

    - iOS'ta EN KOLAY yönlü SMS veritabanı üzerinde tetikleyici oluşturmaya adildir! Sadece yöntemleri :) BTW

    keşfetmek gerekiyor

    bunu yapmanın daha gelişmiş şekilde, özel yöntemler asılıyorsa, ama şu an o derin gitmeyecek, herhangi bir şekilde bir İHTİYACINIZ jailbreak cihaz

    5

    bu- // niyet SMS_RECEIVED için manifest dosyasında alıcısı olarak bu sınıfı kayıt denemek

    public class SmsReceiver extends BroadcastReceiver { 
    
        private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
    
        @Override 
        public void onReceive(Context context, Intent intent) { 
         if (intent.getAction().equals(SMS_RECEIVED)) { 
           abortBroadcast();**this is prevent message to deliver to user** 
    
          Bundle bundle = intent.getExtras(); 
          if (bundle != null) { 
           // get sms objects 
           Object[] pdus = (Object[]) bundle.get("pdus"); 
           if (pdus.length == 0) { 
            return; 
           } 
           // large message might be broken into many 
           SmsMessage[] messages = new SmsMessage[pdus.length]; 
           StringBuilder sb = new StringBuilder(); 
           for (int i = 0; i < pdus.length; i++) { 
            messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
            sb.append(messages[i].getMessageBody()); 
           } 
           String sender = messages[0].getOriginatingAddress(); 
           String message = sb.toString(); 
           Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
    
           SmsManager sms = SmsManager.getDefault(); 
           sms.sendTextMessage(phoneNumber, null, message, null, null);//phone number will be your number. 
          } 
         } 
        } 
    } 
    
    +0

    Gelen mesajı da değiştirmek istiyorum. Kodlar için hepinize teşekkür ederim. @Sharad Mhaske: Lütfen kodu gönderebilir misiniz: ** ** SMSManager sınıfı ** – Milan

    +1

    @milan kullanarak değiştirilmiş içerik ile kendi kendine mesaj gönderin: güncellenmiş kodu kontrol edin.Yalnızca mesaj göndermek için izin eklemeniz gerekir manifest dosyasında –

    2

    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; 
    
    +0

    Bu harika bir cevap. Umarım kitkat + 'da sms uygulaması yapan herkes onu okur. – Kay