Wie man eine SMS in Kotlin löscht
Der einfachste Weg, SMS von Kotlin aus zu senden, ist die Verwendung der integrierten HTTP/Rest-SMS-API von Ozeki SMS Gateway. Wenn Sie diese API verwenden, senden Sie SMS-Nachrichten, indem Sie eine HTTP-Post-Anfrage an das SMS-Gateway stellen. Die HTTP-Post-Anfrage enthält eine Nachricht im JSON-Format. Das SMS-Gateway sendet diese SMS an den Empfänger und gibt eine HTTP-200-OK-Antwort auf Ihre Anfrage zurück. (Abbildung 1)
Kotlin-Code zum Löschen einer SMS
Das folgende Kotlin-SMS-Codebeispiel zeigt, wie Sie SMS-Nachrichten mit der HTTP-Rest-SMS-API von Ozeki SMS Gateway unter Verwendung der Kotlin-Bibliothek Ozeki.Libs.Rest löschen können. Diese Bibliothek wird Ihnen kostenlos zur Verfügung gestellt und Sie können sie in Ihren Projekten verwenden und nach Belieben anpassen.
MainActivity.kt
package delete.sms import Ozeki.Libs.Rest.Configuration import Ozeki.Libs.Rest.Folder import Ozeki.Libs.Rest.MessageApi import Ozeki.Libs.Rest.Message import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.text.method.ScrollingMovementMethod import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val folderCategories:android.widget.Spinner = findViewById(R.id.folderCategories) val ID:android.widget.EditText = findViewById(R.id.inputId) val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest) val logBox:android.widget.TextView = findViewById(R.id.logBox) logBox.movementMethod = ScrollingMovementMethod() val configuration = Configuration( username = "http_user", password = "qwe123", apiurl = "http://10.0.2.2:9509/api" ) val api = MessageApi(configuration) btnSendRequest.setOnClickListener { if (ID.text.toString() != "") { val msg = Message() msg.ID = ID.text.toString() val folder: Folder when (folderCategories.selectedItem.toString()) { "Outbox" -> folder = Folder.Outbox; "Sent" -> folder = Folder.Sent; "Not sent" -> folder = Folder.NotSent; "Deleted" -> folder = Folder.Deleted; else -> folder = Folder.Inbox } GlobalScope.launch(Dispatchers.IO) { val response = api.Delete(folder, msg) logBox.text = String.format("%s\n%s", logBox.text, response.toString()) } ID.text.clear() } } } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/textId" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="36dp" android:text="ID:" android:textSize="20dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.494" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/inputId" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:ems="10" android:hint="4c24263b-dacc-48d1-b179-b7e64f08eb26" android:inputType="textPersonName" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.494" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textId" /> <Spinner android:id="@+id/folderCategories" android:layout_width="320dp" android:layout_height="50dp" android:layout_marginTop="40dp" android:entries="@array/folders" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.494" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputId" /> <Button android:id="@+id/btnSendRequest" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Löschen" app:layout_constraintEnd_toEndOf="parent" android:backgroundTint="#FF3F3F" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/logBox" /> <TextView android:id="@+id/logBox" android:layout_width="320dp" android:layout_height="250dp" android:layout_marginTop="40dp" android:scrollbars="vertical" android:text="Protokolle:" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/folderCategories" /> </androidx.constraintlayout.widget.ConstraintLayout>
So verwenden Sie das Kotlin-SMS-Beispiel:
Sie können die MessageApi-Klasse verwenden, um SMS-Nachrichten vom SMS-Gateway zu löschen. Ihre Anfrage wird von Ihrem Gerät über das Internet an das SMS-Gateway weitergeleitet.
Download DeleteSms.kt
Der in diesem Artikel erklärte Quellcode kann kostenlos heruntergeladen, verwendet und modifiziert werden.
Download: DeleteSms.kt.zip (149Kb)
Was befindet sich in der DeleteSms.kt.zip-Datei?
Die Datei DeleteSms.kt.zip enthält ein Beispielprojekt, das die Ozeki.Libs.Rest-Bibliothek beinhaltet. Mit dieser Bibliothek können Sie SMS-Nachrichten senden, löschen, markieren und empfangen, indem Sie eine MessageApi erstellen und die Methoden Send(), Delete(), Mark() und Receive() verwenden. (Abbildung 2)
Wie man SMS mit Kotlin löscht (Schnelle Schritte)
Um SMS mit Kotlin zu löschen:
- Installieren Sie Ozeki SMS Gateway
- Verbinden Sie Ozeki SMS Gateway mit dem Mobilfunknetz
- Senden Sie eine Test-SMS über die Ozeki GUI
- Erstellen Sie einen HTTP-SMS-API-Benutzer
- Android Studio
- Laden Sie das oben genannte Beispielprojekt herunter
- Erstellen Sie die SMS, indem Sie ein neues Message-Objekt erstellen
- Erstellen Sie eine API zum Löschen einer SMS-Nachricht
- Verwenden Sie die Delete-Methode, um Ihre Nachricht zu löschen
- Lesen Sie die Antwortnachricht auf der Konsole
- Überprüfen Sie die Protokolle im SMS-Gateway
Installieren Sie Ozeki SMS Gateway und erstellen Sie einen HTTP-API-Benutzer
Um SMS mit Kotlin löschen zu können, müssen Sie zunächst Ozeki SMS Gateway installieren. Das SMS-Gateway kann auf demselben Computer installiert werden, auf dem Sie Ihren Kotlin-Code in Android Studio entwickeln. Nach der Installation ist der nächste Schritt, Ozeki SMS Gateway mit dem Mobilfunknetz zu verbinden. Sie können eine Test-SMS über die Ozeki GUI senden, um zu überprüfen, ob Ihre Mobilfunknetzverbindung funktioniert. Der letzte Schritt zur Vorbereitung Ihrer Umgebung ist die Erstellung eines HTTP-SMS-API-Benutzerkontos. Erstellen Sie einen Benutzer mit dem Benutzernamen "http_user" und dem Passwort "qwe123", damit das Beispiel ohne Änderungen funktioniert.
Nachdem die Umgebung eingerichtet ist, können Sie Ihren Kotlin-Code ausführen.
HTTP-API-URL zum Senden von SMS mit Kotlin
Um SMS mit Kotlin zu löschen, muss Ihre Kotlin-Anwendung eine HTTP-Anfrage an das SMS-Gateway senden. Die API-URL wird unten angezeigt. Beachten Sie, dass die IP-Adresse (127.0.0.1) durch die IP-Adresse Ihres SMS-Gateways ersetzt werden sollte. Wenn Ozeki SMS Gateway auf demselben Computer installiert ist, auf dem die JavaScript-SMS-Anwendung läuft, kann dies 127.0.0.1 sein. Wenn es auf einem anderen Computer installiert ist, sollte es die IP-Adresse dieses Computers sein.
http://127.0.0.1:9509/api?action=rest
HTTP-Authentifizierung zum Löschen von SMS mit Kotlin
Um den Kotlin-SMS-Client zu authentifizieren, müssen Sie den Benutzernamen und das Passwort in einer base64-kodierten Zeichenkette an den Server in einer HTTP-Anfrage senden. Das verwendete Format ist: base64(Benutzername+":"+Passwort). In Kotlin können Sie den folgenden Code verwenden, um diese Kodierung durchzuführen:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Wenn Sie beispielsweise den Benutzernamen 'http_user' und das Passwort 'qwe123' kodieren, erhalten Sie die folgende base64-kodierte Zeichenkette: aHR0cF91c2VyOnF3ZTEyMw==. Zum Senden
HTTP-Anfrageheader zum Löschen von SMS mit Kotlin
Um die SMS-Nachricht(en) zu löschen, müssen Sie die folgenden Zeilen als Header in die HTTP-Anfrage aufnehmen. Beachten Sie, dass wir einen Content-Type-Header und einen Authorization-Header einfügen.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP-Anfrage zum Löschen von SMS mit Kotlin
Um SMS zu löschen, sendet Ihre Kotlin-Anwendung eine HTTP-Anfrage ähnlich der unten gezeigten. Beachten Sie, dass diese Anfrage einen HTTP-Header-Teil und einen HTTP-Body-Teil enthält. Der HTTP-Body ist eine JSON-kodierte Datenzeichenkette. Sie enthält die IDs der Nachrichten, die Sie löschen möchten.
POST /api?action=deletemsg HTTP/1.1 Connection: Keep-Alive Content-Length: 73 Content-Type: application/json; charset=utf-8 Accept-Encoding: gzip Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 10.0.2.2:9509 User-Agent: okhttp/4.2.2 { "folder": "inbox", "message_ids": [ "f07b71e9-6c4c-8ff1-88a5-3aa9fec74966" ] }
HTTP-Antwort, die vom Kotlin-SMS-Beispiel empfangen wird
Sobald das SMS-Gateway diese Anfrage empfängt, wird es eine HTTP-Antwort generieren. Die HTTP-Antwort enthält einen Statuscode, der angibt, ob die SMS-Löschung erfolgreich war oder nicht. Sie gibt auch eine JSON-kodierte Struktur zurück, die Ihnen nützliche Details über die Löschung der Nachricht liefert.
HTTP/1.1 200 OK User-Agent: OZEKI 10.3.120 (www.myozeki.com) Content-Type: application/json; charset=utf8 Last-Modified: Fri, 18 Jun 2021 08:10:45 GMT Server: 10/10.3.120 Transfer-Encoding: chunked { "http_code": 200, "response_code": "SUCCESS", "response_msg": "", "data": { "folder": "inbox", "message_ids": [ "f07b71e9-6c4c-8ff1-88a5-3aa9fec74966" ] } }
Dieses Video zeigt Ihnen, wie Sie das DeleteSms.kt-Projekt herunterladen und verwenden. Sobald Sie das Beispielprojekt geöffnet haben, werden Sie möglicherweise feststellen, dass es ein Paket namens Ozeki.Libs.Rest gibt. Dies ist das Paket, das die MessageApi und alles, was Sie benötigen, enthält, um SMS-Nachrichten mit Kotlin zu löschen.
Wie Sie überprüfen, ob die Anfrage vom HTTP-Benutzer akzeptiert wurde
Nachdem die SMS übermittelt wurde, ist es eine gute Idee, Ihr SMS-Gateway zu überprüfen, um zu sehen, was es empfangen hat. Sie können das Protokoll einsehen, indem Sie die Details des HTTP-Benutzers in der Ozeki SMS Gateway Management-Konsole öffnen. Am Ende des obigen Videos können Sie sehen, wie Sie überprüfen, ob die Anfrage vom http_user empfangen wurde. (Abbildung 3)
Verwendung der App auf einem Telefon
In Abbildung 4 können Sie sehen, wie das Löschen einer SMS-Nachricht aussieht, wenn Sie die Anwendung auf einem Telefon verwenden. Fügen Sie die Nachrichten-ID in das 'ID'-Textfeld ein und drücken Sie die 'Löschen'-Taste. Dadurch wird die ausgewählte Nachricht gelöscht. Wenn der Vorgang erfolgreich abgeschlossen wurde, sehen Sie die Meldung 'true' im 'Logs'-Bereich.
Wie Sie Ozeki.Libs.Rest zu Ihrem eigenen Projekt hinzufügen
Die Ozeki.Libs.Rest-Bibliothek kann kostenlos heruntergeladen, verwendet und modifiziert werden.
Download: Ozeki.Libs.Rest.kt.zip (7.66Kb)
Wenn Sie sich entscheiden, Ihre Anwendung nur mit der Ozeki.Libs.Rest-Bibliothek
selbst zu erstellen, gibt es einige Dinge, die Sie in Ihrer Basis-Anwendung ändern sollten.
Um die Ozeki.Libs.Rest-Bibliothek zu verwenden, müssen Sie sie in den Java-Ordner
des Hauptverzeichnisses einfügen.
Im folgenden Video zeige ich Ihnen, wie Sie die Ozeki.Libs.Rest-Bibliothek herunterladen
und zu Ihrem eigenen Projekt hinzufügen.
Abhängigkeiten
Es ist wichtig zu erwähnen, dass die Ozeki.Libs.Rest-Bibliothek einige Abhängigkeiten hat. Um sie zu verwenden, müssen Sie diese Abhängigkeiten in die Gradle Scripts einfügen.
implementation "com.squareup.okhttp3:okhttp:4.2.2" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
Wie Sie die benötigten Abhängigkeiten hinzufügen (Video-Tutorial)
In diesem Video zeigen wir Ihnen den Prozess des Hinzufügens von Abhängigkeiten zu Ihrem Projekt. Das Video beginnt mit dem Kopieren des Codes von dieser Tutorial-Seite und endet mit den Abhängigkeiten im Projekt. Diese Abhängigkeiten sind entscheidende Teile des Projekts. Ohne diese wird die Ozeki.Libs.Rest nicht funktionieren. Dieses Video ist nur 53 Sekunden lang, aber es ist leicht zu verstehen und zu befolgen.
Internetzugang
Damit Ihre Anwendung eine HTTP-Anfrage senden kann, müssen Sie
Ihrer Anwendung den Zugriff auf das Internet ermöglichen.
Im folgenden Video zeige ich Ihnen, wie Sie den Internetzugang
für Ihre Kotlin-Anwendung aktivieren.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
Wie Sie eine Internetverbindung zu Ihrem Projekt hinzufügen (Video-Tutorial)
Sie müssen beide dieser Zeilen in die AndroidManifest.xml-Datei einfügen.
Im nächsten Video zeige ich Ihnen, wo Sie die zuvor genannten Codes eingeben sollten.
Das Video beginnt mit dem Kopieren des Codes und führt Sie zur erfolgreich hinzugefügten Internetverbindung.
Dieses Video ist präzise und leicht zu befolgen.
Abschließende Gedanken
Dieser Artikel zeigt Ihnen, wie Sie den gegebenen Kotlin-Code verwenden können, um SMS-Nachrichten mit dem HTTP-Benutzer des Ozeki SMS Gateways zu löschen. Wenn Sie täglich mit vielen SMS-Nachrichten zu tun haben und mehrere davon unerwünscht sind, ist das hier gezeigte Verfahren unerlässlich für Sie. Ein häufig bereinigter und somit ausgeglichener Speicher ist in allen Bereichen sehr wichtig, da er dynamischeres und effizienteres Arbeiten ermöglicht.
Setzen Sie diese lehrreiche Reise auf der Ozeki-Webseite fort und wählen Sie aus den vielen anderen Artikeln. Lesen Sie den Artikel mit dem Titel Github: Kotlin SMS API, der sich mit einem der frei nutzbaren Repositories befasst.
Laden Sie das Ozeki SMS Gateway jetzt herunter und wenden Sie das Gelernte an!
More information