2017-04-16 3 views
1

Ich entwickle eine SMS-MMS-Vault-Anwendung für Android. Der Zweck besteht darin, einige Sicherheitslücken in Android zu beheben sowie einen "sicheren" Kommunikationsraum zwischen bestimmten Kontakten (verschlüsselte SMS und MMS) zu schaffen.Parsing empfangen MMS für Bilder und Text

Ich habe alle vorgesehenen Funktionen implementiert, mit Ausnahme der Funktionalität zum Empfangen von MMS. Ich habe in dieser Angelegenheit keine Dokumentation gefunden. Ich habe eine Menge Code von anderen Apps gelesen, die diese Funktionalität implementieren, und alle warten darauf, dass die Standardanwendung die MMS empfängt und sie dann abruft, was meiner Suche nach nicht der Fall ist, für den meine Anwendung gedacht ist der Standard.

So bittet hier meine Frage:

Nachdem die MMS Absicht empfangen, wie kann ich das Bild und der Text analysieren?

Antwort

0

Also, was Sie tun können, Bilder zu bekommen, ist gehe ich die MMS von id und gehen durch („Inhalt: // mms/part“) eine Typprüfung tun:

String type = cursor.getString(cursor.getColumnIndex("ct")); 
String partId = cursor.getString(cursor.getColumnIndex("_id")); 


//is type a picture 
if ("image/jpeg".equals(type) || "image/bmp".equals(type) 
    || "image/gif".equals(type) || "image/jpg".equals(type) 
    || "image/png".equals(type)) { 
        getMmsImage(partId); // load in your picture 
     } 

Sie jetzt, dass Sie haben die Teil-ID Sie das Bild des Orts bekannt ist, so dass Sie es sich mit etwas laden können Sie zum Beispiel wollen, wenn Sie es einfach als Bitmap wollen Sie tun können:

public Bitmap getMmsImage(String _id, Context context) { 

     Uri partURI = Uri.parse("content://mms/part/" + _id); 
     InputStream is = null; 
     Bitmap bitmap = null; 
     try { 
      is = context.getContentResolver().openInputStream(partURI); 
      bitmap = BitmapFactory.decodeStream(is); 

     } catch (Exception e) {// probably should do an ioException around here} 
     finally { 
      if (is != null) { 
       try { 
        is.close(); 
       } catch (IOException e) {} 
      } 
     } 
     return bitmap; 
    } 

Nun möchte Ich mag darauf hinweisen, dass, wenn Sie wollte animierte gifs das würde nicht funktionieren, es würde laden die gifs aber sie würden immer noch ich Magier. Wenn Sie sie animiert haben möchten, können Sie etwas wie Glide verwenden und geben Sie den Pfad für die URI. Glide braucht eine Weile, um Gifs zu laden, nur eine faire Warnung.

Wie beim Empfang von MMS können Sie immer einen Observer verwenden und die hinzugefügte Nachricht laden, wenn der Beobachter sagt, dass eine Änderung aufgetreten ist ... Oder verwenden Sie einen Broadcast-Empfänger, wenn Sie möchten, dass er der Standard-Messenger ist.