Wie man eine bestimmte SMS in Android zu öffnen

Gibt es eine Möglichkeit, die Messaging-Aktivität auf Android mit einer bestimmten SMS zu öffnen?

  • Android: Warum sollte ich keine Aktivitäten in Tabs verwenden?
  • Gemeinsame Präferenzen "Grenze"
  • Visual Studio 2015 RTM Cordova-Projekt wird nicht auf Android, Windows, Windows Phone debuggen / bereitstellen
  • Android ViewPager und TabLayout funktionieren nicht schnell
  • Android-String-Codierung und HTML-Entities Konvertierung
  • Zeichnen von Pfaden und Hardwarebeschleunigung
  • Android Tabs + Sliding, wie implementiere ich ActionBarSherlock?
  • Hide infoWindow beim Anklicken Marker zum zweiten Mal (Google Map Android API V2)
  • Unterschied zwischen eng und user-debug in Android zu bauen
  • Entwickeln eines benutzerdefinierten Sperrbildschirms
  • Aus Speicherfehler beim Aufblasen einfaches XML-Layout in Android
  • AndroidManifest.xml für Gradle InstrumentTest
  • 4 Solutions collect form web for “Wie man eine bestimmte SMS in Android zu öffnen”

    threadId sollte die ID des SMS / MMS-Threads sein, den du ansehen möchtest

     Intent defineIntent = new Intent(Intent.ACTION_VIEW); defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+threadId)); myActivity.startActivity(defineIntent); 

    Dies ist der einfachste Weg, den ich gefunden habe

    Versuche dies

     int req_thread_id; Uri mSmsinboxQueryUri = Uri.parse("content://sms")); Cursor cursor1 = getContentResolver().query( mSmsinboxQueryUri, new String[] { "_id", "thread_id", "address", "person", "date", "body", "type" }, null, null, null); startManagingCursor(cursor1); if (cursor1.getCount() > 0) { while (cursor1.moveToNext()) { int thread_id = cursor1.getInt(1); String address; = cursor1.getString(cursor1 .getColumnIndex(columns[0])); if("your desired no".equals(address) req_thread_id = thread_id; } } Intent defineIntent = new Intent(Intent.ACTION_VIEW); defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+req_thread_id)); myActivity.startActivity(defineIntent); 

    Ich grub das aus der Quelle für die Messaging App ( Zeilen 311-315 ), also bin ich mir ziemlich sicher, dass es funktionieren wird, aber ich habe keine Erfahrung damit.

     // threadId should be the id of the sms/mms thread you want to view long threadId = 0; Intent i = new Intent("com.android.mms"); i.setData( Uri.withAppendedPath( i.getData(), Long.toString(threadId) ) ); i.setAction(Intent.ACTION_VIEW); 

    Dieses Snippet ist von einem Kommentar in der akzeptierten Antwort. Veröffentlichen Sie die Methode hier für die Nachwelt.

     public static long findThreadIdFromAddress(Context context, String address) { if (address == null) return 0; String THREAD_RECIPIENT_QUERY = "recipient"; Uri.Builder uriBuilder = THREAD_ID_CONTENT_URI.buildUpon(); uriBuilder.appendQueryParameter(THREAD_RECIPIENT_QUERY, address); long threadId = 0; Cursor cursor = null; try { cursor = context.getContentResolver().query( uriBuilder.build(), new String[] { Contacts._ID }, null, null, null); if (cursor != null && cursor.moveToFirst()) { threadId = cursor.getLong(0); } } finally { if (cursor != null) { cursor.close(); } } return threadId; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.