Gå til innhold

[LØST] android motta multipart meldinger


Anbefalte innlegg

Videoannonse
Annonse

Mener du at jeg skal legge ut kode? Kan ikke helt se noen grunn til det. Det eneste jeg lurer på er om noen vet hvordan man mottar en melding i android som er lengre enn 160 tegn, altså en oppdelt melding og sette denne sammen til en melding.

Lenke til kommentar

Mener du at jeg skal legge ut kode? Kan ikke helt se noen grunn til det. Det eneste jeg lurer på er om noen vet hvordan man mottar en melding i android som er lengre enn 160 tegn, altså en oppdelt melding og sette denne sammen til en melding.

 

Og jeg ser ingen grunn til å komme med noe løsningsforslag før jeg ser hva du har prøvd til nå.

 

---

BalleB

Lenke til kommentar

Dette er koden jeg bruker for å motta sms.

 

Bundle bundle = intent.getExtras();

       if (bundle != null)
       {
           //get messages
           Object[] pdus = (Object[])bundle.get(Keys.MESSAGE_PDUS);
           SmsMessage[] msgs = new SmsMessage[pdus.length];

           for (int i = 0; i < msgs.length; i++)
           {
               msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

               //give out notify dialog with received sms
               try
               {
                   Intent in = new Intent(context, SMSDialog.class);
                   in.putExtra(Keys.CONTACT_NUMBER, msgs[i].getOriginatingAddress());
                   in.putExtra(Keys.RECEIVED_MESSAGE, msgs[i].getMessageBody().toString());
                   in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);
                   context.startActivity(in);
               }
               catch (Exception ex) { Toast.makeText(context, "SMS exception: " + ex.toString(), Toast.LENGTH_LONG).show(); }
           }
       }

 

 

Jeg har prøvd flere ting.

 

1. Jeg har prøvd å sjekke msgs.length() for å se om en multipart melding blir mottatt på en gang slik at jeg bare kunne kombinert disse, noe det ikke blir.

 

2. Jeg har prøvd å sjekke msgs.getMessageBody().toString().length() for å se om teksten var lengre enn 160, noe den ikke var.

 

 

Har googlet masse, men finner ingenting.

Lenke til kommentar

I fjor jobbet jeg endel med programvare for å sende og motta SMS'er fra Java, via RxTx over USB-baserte GSM-modem. Å sende og motta meldinger <= 160 tegn var plankekjøring, men > 160 tegn var skikkelig pain in the *ss. Fant etterhvert SMSLIB (http://smslib.org/download/) som inneholdt kode for å kode / dekode PDU-arrayer. Det gjorde iallefall implementeringen av multipart meldinger mye enklere. Det er jo Java, så det burde fungere på Android også.

 

---

BalleB

Lenke til kommentar

Fant ut av det.

 

Som jeg sa tidligere hadde jeg prøvd å sjekke msgs.length(), men dette hadde jeg bare prøvd på emulatoren, og den kan sende multipart meldinger, men den greier ikke å ta imot slike. Når jeg prøvd på min egen desire, fungerte det helt topp.

 

Dersom det er en multipart melding vil msgs.length() inneholde antall.

Object[] pdus = (Object[])bundle.get(Keys.MESSAGE_PDUS);
SmsMessage[] msgs = new SmsMessage[pdus.length];
int antall = msgs.length();

Endret av miXer
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...