Markieren von SMS-Nachrichten als gelesen / ungelesen oder Löschen von Nachrichten, die nicht in KitKat funktionieren

Ich habe an einer SMS-Anwendung gearbeitet. Alles war glatt bis gestern, als ich meinen Nexus 4 auf Android 4.4, KitKat aktualisiert habe. Features wie das Markieren einer SMS als gelesen / ungelesen, und das Löschen aller Nachrichten in einem Thread hat aufgehört zu arbeiten. Warum passiert dies? Es funktioniert auf anderen Samsung-Geräten (nicht mit KitKat).

Dies ist mein Code, um eine Nachricht als gelesen oder ungelesen zu markieren:

  • Android Studio hängt / friert ein, wenn Projektaufbau fehlschlägt
  • Fehler, der auf eine innere Klasse verweist View in layout / main.xml
  • Methode, um Benutzername und Passwort in VpnService.Builder zu übergeben
  • Wie lösche ich Ordner aus internem Speicher in Android?
  • SetRotation (90), um das Bild im Hochformat aufzunehmen, funktioniert nicht bei Samsung-Geräten
  • Wie programmgesteuert man Anrufprotokolleinträge mit Anzeigenamen und Foto einfügt?
  • public static void markRead(final Context context, final Uri uri, final int read) { Log.d(TAG, "markRead(" + uri + "," + read + ")"); if (uri == null) { return; } String[] sel = Message.SELECTION_UNREAD; if (read == 0) { sel = Message.SELECTION_READ; } final ContentResolver cr = context.getContentResolver(); final ContentValues cv = new ContentValues(); cv.put(Message.PROJECTION[Message.INDEX_READ], read); try { cr.update(uri, cv, Message.SELECTION_READ_UNREAD, sel); } catch (IllegalArgumentException e) { Log.e(TAG, "failed update", e); Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); } } 

    Zum Löschen aller Nachrichten in einem Thread benutze ich:

     public static void deleteMessages(final Context context, final Uri uri, final int title, final int message, final Activity activity) { Log.i(TAG, "deleteMessages(..," + uri + " ,..)"); final Builder builder = new Builder(context); builder.setTitle(title); builder.setMessage(message); builder.setNegativeButton(android.R.string.no, null); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int which) { final int ret = context.getContentResolver().delete( uri, null, null); Log.d(TAG, "deleted: " + ret); if (activity != null && !activity.isFinishing()) { activity.finish(); } if (ret > 0) { Conversation.flushCache(); Message.flushCache(); SmsReceiver.updateNewMessageNotification(context, null); // adapter.notifyDataSetChanged(); } try { testFromFragment(context); } catch (Exception e) { e.printStackTrace(); } } }); builder.show(); } 

  • Beste Verwendung von HandlerThread über andere ähnliche Klassen
  • Android Bearbeiten Text von Keyboard auf Zweite tippen
  • Einzigartige ID der Android App
  • setSelection auf Spinner basierend auf rowId
  • Was ist der richtige Weg, um mit den veralteten Fragment-Ereignissen aufAttach und OnInflate umzugehen
  • Build.gradle ist von der dekompilierung gesichert?
  • One Solution collect form web for “Markieren von SMS-Nachrichten als gelesen / ungelesen oder Löschen von Nachrichten, die nicht in KitKat funktionieren”

    Mit Android 4.4 haben sich einige Dinge im Hinblick auf SMS geändert. Unter ihnen ist die Tatsache, dass nur die App, die als Standard-SMS-App registriert ist, Schreibzugriff auf den Provider hat.

    Überprüfen Sie hier für eine kurze Klappe bei Änderungen an SMS.

    Überprüfen Sie diesen Link für einen genaueren Blick. Dies erklärt, welche Kriterien Ihre App zu treffen, um die Standard-Messaging-App zu sein.

    Und hier ist das offizielle lustige Zeug.

    Also, wenn Ihre App nicht die Standard-Messaging-App ist, wäre das der Grund, warum die angegebenen Funktionalitäten nicht mehr funktionieren.


    Ein möglicher Workaround für die Standard-Provider-Beschränkung finden Sie hier bei der Antwort .

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.