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)

cum să ștergi un sms în kotlin
Figura 1 - Cum să ștergi un SMS în Kotlin

Cod Kotlin pentru ștergerea SMS-urilor

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.

Video 1 - Cum să descarci exemplul DeleteSms.kt.zip (Tutorial video)

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()
            }
        }
    }
}
	
main_activity.xml
<?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)

proiect exemplu pentru ștergerea SMS-urilor folosind Kotlin
Figura 2 - Directorul DeleteSms.kt

Cum să ștergi SMS-uri cu Kotlin (Pași rapizi)

Pentru a șterge SMS-uri cu Kotlin:

  1. Instalează Ozeki SMS Gateway
  2. Conectează Ozeki SMS Gateway la rețeaua mobilă
  3. Trimite un SMS de test din interfața Ozeki
  4. Creează un utilizator HTTP API pentru SMS
  5. Android Studio
  6. Descarcă proiectul exemplu de mai sus
  7. Creează SMS-ul prin crearea unui nou obiect Message
  8. Creează un API pentru a șterge un mesaj SMS
  9. Folosește metoda Delete pentru a șterge mesajul tău
  10. Citește mesajul de răspuns în consolă
  11. 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.

Video 2 - Cum să ștergeți SMS cu codul Kotlin de mai sus (Tutorial video)

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)

proiect kotlin pentru primirea mesajelor sms
Figura 3 - Proiectul DeleteSms.kt în Android Studio

Utilizarea aplicației pe un telefon

Î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'.

aplicație exemplu kotlin pentru primirea mesajelor sms
Figura 4 - Aplicația exemplu DeleteSms înainte și după ce mesajele au fost descărcate

Cum să adăugați Ozeki.Libs.Rest în propriul proiect

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.

Video 3 - Cum să adăugați biblioteca Ozeki.Libs.Rest în propria aplicație (Tutorial video)

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'
	

Codul 1 - Lista dependințelor pe care trebuie să le includeți.

Cum să adăugați dependințele necesare (Tutorial video)

Î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.

Video 4 - Cum să adăugați dependințele necesare (Tutorial video)

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" />
	

Codul 2 - Pentru a activa accesul la internet pentru aplicația dvs. Kotlin.

android:usesCleartextTraffic="true"
	

Codul 3 - Pentru a permite trimiterea cererilor HTTP

Cum să adăugați conexiune la internet în proiect (Tutorial video)

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.

Video 5 - Cum să permiteți accesul la internet pentru aplicația dvs. (Tutorial video)

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