Cum să ștergi un SMS în Kotlin
Cea mai simplă metodă de a trimite SMS din Kotlin este utilizarea API-ului HTTP/Rest SMS încorporat al Ozeki SMS Gateway. Când folosești acest API, vei trimite mesaje SMS prin efectuarea unei cereri HTTP Post către gateway-ul SMS. Cererea HTTP Post va conține un mesaj formatat în format json. Gateway-ul SMS va trimite acest SMS către telefonul destinatar și va returna un răspuns HTTP 200 OK la cererea ta. (Figura 1)
Exemplul de cod Kotlin pentru SMS de mai jos demonstrează cum poți șterge mesajele SMS folosind API-ul http rest sms al Ozeki SMS Gateway cu ajutorul bibliotecii Kotlin Ozeki.Libs.Rest. Această bibliotecă este oferită gratuit și poți să o folosești și să o modifici în oricare dintre proiectele tale.
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="Șterge" 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="Jurnal:" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/folderCategories" /> </androidx.constraintlayout.widget.ConstraintLayout>
Cum să folosești exemplul Kotlin pentru SMS:
Poți folosi clasa MessageApi pentru a șterge mesajele SMS din gateway-ul SMS. Cererea ta va fi trimisă către Gateway-ul SMS de pe dispozitivul tău prin internet.
Descarcă DeleteSms.kt
Codul sursă explicat în acest articol poate fi descărcat, utilizat și modificat gratuit.
Descarcă: DeleteSms.kt.zip (149Kb)
Ce conține fișierul DeleteSms.kt.zip?
Fișierul DeleteSms.kt.zip conține un proiect exemplu, care include biblioteca Ozeki.Libs.Rest. Cu această bibliotecă poți trimite, șterge, marca și primi mesaje SMS prin crearea unui MessageApi și utilizarea metodelor Send(), Delete(), Mark() și Receive(). (Figura 2)
Cum să ștergi SMS-uri cu Kotlin (Pași rapizi)
Pentru a șterge SMS-uri cu Kotlin:
- Instalează Ozeki SMS Gateway
- Conectează Ozeki SMS Gateway la rețeaua mobilă
- Trimite un SMS de test din interfața Ozeki
- Creează un utilizator HTTP API pentru SMS
- Android Studio
- Descarcă proiectul exemplu de mai sus
- Creează SMS-ul prin crearea unui nou obiect Message
- Creează un API pentru a șterge un mesaj SMS
- Folosește metoda Delete pentru a șterge mesajul tău
- Citește mesajul de răspuns în consolă
- Verifică jurnalele în SMS gateway
Instalează Ozeki SMS Gateway și creează un utilizator HTTP API
Pentru a putea șterge SMS-uri cu Kotlin, mai întâi trebuie să instalezi Ozeki SMS Gateway. SMS gateway-ul poate fi instalat pe același computer unde dezvolți codul Kotlin în Android Studio. După instalare, următorul pas este să conectezi Ozeki SMS Gateway la rețeaua mobilă. Poți creezi un utilizator HTTP API pentru SMS. Creează un utilizator cu numele de utilizator "http_user" și parola "qwe123" pentru a face exemplul să funcționeze fără modificări.
După ce mediul este configurat, poți rula codul Kotlin.
URL-ul API HTTP pentru a trimite SMS din Kotlin
Pentru a șterge SMS-uri cu Kotlin, aplicația ta Kotlin va trebui să trimită o cerere HTTP către SMS gateway. URL-ul API este afișat mai jos. Reține că adresa IP (127.0.0.1) ar trebui să fie înlocuită cu adresa IP a SMS gateway-ului tău. Dacă Ozeki SMS Gateway este instalat pe același computer unde rulează aplicația JavaScript pentru SMS, poate fi 127.0.0.1. Dacă este instalat pe un computer diferit, ar trebui să fie adresa IP a acelui computer.
http://127.0.0.1:9509/api?action=rest
Autentificarea HTTP pentru a șterge SMS-uri cu Kotlin
Pentru a autentifica clientul Kotlin pentru SMS, trebuie să trimiți numele de utilizator și parola într-un șir codificat base64 către server într-o cerere HTTP. Formatul folosit este: base64(nume_utilizator+":"+parolă). În Kotlin poți folosi următorul cod pentru a face această codificare:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
De exemplu, dacă codezi numele de utilizator 'http_user' și parola 'qwe123', vei obține următorul șir codificat base64: aHR0cF91c2VyOnF3ZTEyMw==. Pentru a trimite
Antetul cererii HTTP pentru a șterge SMS din Kotlin
Pentru a șterge mesajul(ele) SMS, trebuie să incluzi următoarele linii ca antete în cererea HTTP. Reține că includem un antet pentru tipul conținutului și un antet de Autorizare.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cererea HTTP pentru a primi SMS cu Kotlin
Pentru a șterge SMS-uri, aplicația ta Kotlin va trimite o cerere HTTP similară cu cea de mai jos. Reține că această cerere conține o parte pentru antetul HTTP și o parte pentru corpul HTTP. Corpul HTTP este un șir de date codificat JSON. Conține ID-urile mesajelor pe care dorești să le ștergi.
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" ] }
Răspunsul HTTP primit de exemplul Kotlin pentru SMS
Odată ce SMS gateway-ul primește această cerere, va genera un răspuns HTTP. Răspunsul HTTP va conține un cod de stare, pentru a indica dacă cererea de trimitere a SMS-ului a fost reușită sau nu. De asemenea, va returna o structură codificată JSON pentru a-ți oferi detalii utile despre trimiterea mesajului.
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" ] } }
Cum să ștergeți mesaje SMS cu Kotlin folosind API-ul SMS și proiectul exemplu de mai sus (Tutorial video)
Acest videoclip vă arată cum să descărcați și să utilizați proiectul DeleteSms.kt. După ce ați deschis proiectul exemplu, ați putea observa că există un pachet numit Ozeki.Libs.Rest. Acesta este pachetul care conține MessageApi și toate elementele necesare pentru a șterge mesajele SMS folosind Kotlin.
Cum să verificați dacă cererea a fost acceptată de utilizatorul HTTP
După ce SMS-ul a fost trimis, este o idee bună să verificați gateway-ul SMS, pentru a vedea ce a primit. Puteți verifica jurnalul deschizând detaliile utilizatorului HTTP din consola de management Ozeki SMS Gateway. La sfârșitul videoclipului de mai sus puteți vedea cum să verificați dacă cererea a fost primită de http_user. (Figura 3)
În Figura 4, puteți vedea cum arată ștergerea unui mesaj SMS când utilizați aplicația pe un telefon. Lipiți ID-ul mesajului în caseta de text 'ID' și apăsați butonul 'Șterge'. Acesta va șterge mesajul ales. Dacă procesul a fost finalizat cu succes, veți vedea mesajul 'true' în secțiunea 'Jurnale'.
Biblioteca Ozeki.Libs.Rest poate fi descărcată, utilizată și modificată gratuit.
Descărcare: Ozeki.Libs.Rest.kt.zip (7.66Kb)
Dacă decideți să vă creați aplicația pe cont propriu doar cu biblioteca Ozeki.Libs.Rest,
există câteva lucruri pe care trebuie să le schimbați în aplicația de bază.
Pentru a utiliza biblioteca Ozeki.Libs.Rest, trebuie să o plasați în folderul java
din directorul principal
În următorul videoclip vă voi arăta cum să descărcați și să adăugați biblioteca Ozeki.Libs.Rest
în propriul proiect.
Dependințe
Este important de menționat că biblioteca Ozeki.Libs.Rest are câteva dependințe. Pentru a o utiliza, trebuie să adăugați aceste dependințe în Gradle Scripts.
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'
În acest videoclip, vă prezentăm procesul de adăugare a dependințelor în proiectul dvs. Videoclipul va începe cu copierea codului din această pagină de tutorial și se va încheia cu dependințele adăugate în proiect. Aceste dependințe sunt părți cruciale ale proiectului. Fără acestea, Ozeki.Libs.Rest nu va funcționa. Acest videoclip durează doar 53 de secunde, dar este ușor de înțeles și de urmărit.
Acces la internet
Pentru a permite aplicației dvs. să trimită
o cerere HTTP, trebuie să activați aplicația
să se conecteze la internet.
În următorul videoclip vă voi arăta cum să activați accesul la internet
pentru aplicația dvs. Kotlin.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
Trebuie să adăugați ambele linii în fișierul AndroidManifest.xml.
În următorul videoclip, vă voi arăta unde ar trebui să introduceți codurile anterioare.
Videoclipul va începe cu copierea codului și vă va conduce la adăugarea cu succes a conexiunii la internet.
Acest videoclip este precis și ușor de urmărit.
Gânduri finale
Acest articol vă arată cum să folosiți codul Kotlin furnizat pentru a șterge mesajele SMS cu utilizatorul HTTP al Ozeki SMS Gateway. Dacă aveți de-a face cu multe mesaje SMS zilnic și mai multe dintre ele sunt nedorite, procedura prezentată aici este esențială pentru dumneavoastră. Un spațiu de stocare curățat frecvent și, prin urmare, echilibrat este foarte important în toate domeniile, permițând o muncă mai dinamică și eficientă.
Continuați această călătorie instructivă pe pagina web Ozeki, alegeți dintre numeroasele alte articole. Să citim articolul intitulat Github: Koltin SMS API, este despre unul dintre depozitele pe care le puteți utiliza liber.
Descărcați acum Ozeki SMS Gateway și folosiți ceea ce ați învățat!
More information
- Kotlin send SMS with the HTTP rest API (code sample)
- Kotlin send multiple SMS with the HTTP rest API (code sample)
- Kotlin schedule SMS with the HTTP rest API (code sample)
- Kotlin receive SMS with the HTTP rest API (code sample)
- Kotlin delete SMS with the HTTP rest API (code sample)
- Github: Kotlin SMS API