Hogyan töröljünk SMS-t Kotlinban

A legegyszerűbb módja az SMS küldésének Kotlinból az Ozeki SMS Gateway beépített HTTP/Rest SMS API-jának használata. Amikor ezt az API-t használod, SMS üzeneteket küldhetsz HTTP POST kérések kiadásával az SMS gateway felé. A HTTP POST kérés egy JSON formátumban formázott üzenetet fog tartalmazni. Az SMS gateway elküldi ezt az SMS-t a címzett telefonszámára, és egy HTTP 200 OK választ küld vissza a kérésedre. (1. ábra)

hogyan töröljünk sms-t kotlinban
1. ábra - Hogyan töröljünk SMS-t Kotlinban

Kotlin kód SMS törléséhez

Az alábbi Kotlin SMS kód minta bemutatja, hogyan törölhetsz SMS üzenet(ek)et az Ozeki SMS Gateway http rest sms API-jával, a Kotlin Ozeki.Libs.Rest könyvtár segítségével. Ez a könyvtár ingyenesen elérhető számodra, és bármely projektben használhatod és módosíthatod.

1. videó - Hogyan töltsd le a DeleteSms.kt.zip példát (Videó útmutató)

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="Törlés"
        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="Naplók:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/folderCategories" />
</androidx.constraintlayout.widget.ConstraintLayout>
	

A Kotlin SMS példa használata:

A MessageApi osztály segítségével törölhetsz SMS üzenet(ek)et az SMS gatewayből. A kérésed az interneten keresztül kerül továbbításra az SMS Gateway felé a készülékedről.

Töltsd le a DeleteSms.kt-t

A cikkben ismertetett forráskód ingyenesen letölthető, használható és módosítható.
Letöltés: DeleteSms.kt.zip (149Kb)

Mi található a DeleteSms.kt.zip fájlban?

A DeleteSms.kt.zip fájl egy példaprojektet tartalmaz, amelyben megtalálható az Ozeki.Libs.Rest könyvtár. Ezzel a könyvtárral küldhetsz, törölhetsz, jelölhetsz és fogadhatsz SMS üzeneteket egy MessageApi létrehozásával és a Send(), Delete(), Mark(), és Receive() metódusok használatával. (2. ábra)

példaprojekt sms törléséhez kotlinban
2. ábra - DeleteSms.kt könyvtárstruktúra

Hogyan töröljünk SMS-t Kotlinban (Gyors lépések)

SMS törlése Kotlinban:

  1. Telepítsd az Ozeki SMS Gateway-t
  2. Kapcsold össze az Ozeki SMS Gateway-t a mobil hálózattal
  3. Küldj egy teszt SMS-t az Ozeki grafikus felületéről
  4. Hozz létre egy HTTP SMS API felhasználót
  5. Android Studio
  6. Töltsd le a fenti példaprojektet
  7. Hozd létre az SMS-t egy új Message objektum létrehozásával
  8. Hozz létre egy API-t SMS üzenet törléséhez
  9. Használd a Delete metódust az üzeneted törléséhez
  10. Olvasd el a válaszüzenetet a konzolon
  11. Ellenőrizd a naplókat az SMS gatewayben

Telepítsd az Ozeki SMS Gateway-t és hozz létre egy HTTP API felhasználót

Ahhoz, hogy SMS-t törölhess Kotlinban, először telepítened kell az Ozeki SMS Gateway-t. Az SMS gateway telepíthető ugyanarra a számítógépre, ahol a Kotlin kódodat fejleszted az Android Studioban. A telepítés után a következő lépés az, hogy összekapcsolod az Ozeki SMS Gateway-t a mobil hálózattal. HTTP SMS API felhasználói fiók létrehozása. Hozz létre egy felhasználót "http_user" felhasználónévvel és "qwe123" jelszóval, hogy a példa módosítás nélkül működjön.

Miután a környezet be van állítva, futtathatod a Kotlin kódodat.

HTTP API URL SMS küldéséhez Kotlinból

Ahhoz, hogy SMS-t törölj Kotlinban, a Kotlin kódodnak HTTP kérést kell küldenie az SMS gatewaynek. Az API URL az alábbi. Figyelj arra, hogy az IP cím (127.0.0.1) helyére az SMS gateway IP címét kell beírnod. Ha az Ozeki SMS Gateway ugyanarra a számítógépre van telepítve, ahol a JavaScript SMS alkalmazás fut, ez lehet 127.0.0.1. Ha másik számítógépre van telepítve, akkor annak a számítógépnek az IP címét kell megadnod.

http://127.0.0.1:9509/api?action=rest
	

HTTP hitelesítés SMS törléséhez Kotlinban

A Kotlin SMS kliens hitelesítéséhez a felhasználónevet és a jelszót base64 kódolású karakterláncként kell elküldened a szervernek egy HTTP kérésben. A használt formátum: base64(felhasználónév+":"+jelszó). Kotlinban a következő kódot használhatod a kódoláshoz:

var usernamePassword = "%s:%s".format(username, password)
return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
	

Például ha a 'http_user' felhasználónevet és a 'qwe123' jelszót kódolod, a következő base64 kódolású karakterláncot kapod: aHR0cF91c2VyOnF3ZTEyMw==.

HTTP kérés fejléc SMS törléséhez Kotlinból

Az SMS üzenet(ek) törléséhez a következő sorokat kell tartalmaznia a HTTP kérés fejlécének. Figyelj arra, hogy egy tartalomtípust és egy Authorization fejlécet is tartalmazunk.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP kérés SMS fogadásához Kotlinban

Az SMS törléséhez a Kotlin alkalmazásod egy olyan HTTP kérést fog küldeni, mint az alábbi. Figyelj arra, hogy ez a kérés tartalmaz egy HTTP fejléc részt és egy HTTP törzs részt. A HTTP törzs egy JSON kódolású adatsor. Tartalmazza a törölni kívánt üzenetek azonosítóit.

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 válasz, amit a Kotlin SMS példa kap

Amint az SMS gateway megkapja ezt a kérést, generál egy HTTP választ. A HTTP válasz tartalmaz egy állapotkódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Egy JSON kódolású struktúrát is visszaad, amely hasznos részleteket nyújt az üzenet beküldéséről.

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"
	  ]
	}
}
	

Hogyan töröljünk SMS üzeneteket Kotlinban az SMS API és a fenti példaprojekt segítségével (Videó útmutató)

Ez a videó bemutatja, hogyan töltheted le és használhatod a DeleteSms.kt projektet. Miután megnyitottad a példaprojektet, észreveheted, hogy van egy Ozeki.Libs.Rest nevű csomag. Ez a csomag tartalmazza a MessageApi-t és minden szükséges eszközt az SMS üzenet(ek) törléséhez Kotlinban.

2. videó - Hogyan törölj SMS-t a fenti Kotlin kóddal (Videó útmutató)

Hogyan ellenőrizd, hogy a kérést fogadta-e a HTTP felhasználó

Az SMS beküldése után érdemes ellenőrizni az SMS gatewayt, hogy lássad, mit kapott. A naplót az Ozeki SMS Gateway kezelőfelületén, a HTTP felhasználó részleteinél tudod megtekinteni. A fenti videó végén láthatod, hogyan ellenőrizheted, hogy a http_user fogadta-e a kérést. (3. ábra)

kotlin projekt sms üzenetek fogadásához
3. ábra - DeleteSms.kt projekt az Android Studioban

Az alkalmazás használata telefonon

A 4. ábrán láthatod, hogyan néz ki egy SMS üzenet törlése, amikor telefonon használod az alkalmazást. Illeszd be az üzenet azonosítóját az 'ID' szövegmezőbe, majd nyomd meg a 'Törlés' gombot. Ez törölni fogja a kiválasztott üzenetet. Ha a folyamat sikeresen lezajlott, a 'Naplók' részben megjelenik a 'true' üzenet.

példa kotlin alkalmazás sms üzenetek fogadásához
4. ábra - DeleteSms példaalkalmazás az üzenetek letöltése előtt és után

Hogyan adjuk hozzá az Ozeki.Libs.Rest-et a saját projekthez

Az Ozeki.Libs.Rest könyvtár ingyenesen letölthető, használható és módosítható.
Letöltés: Ozeki.Libs.Rest.kt.zip (7.66Kb)

Ha úgy döntesz, hogy csak az Ozeki.Libs.Rest könyvtárral hozod létre az alkalmazásod, néhány dolgot módosítanod kell az alap alkalmazásban. Az Ozeki.Libs.Rest könyvtár használatához a fő könyvtár java mappájába kell helyezned
A következő videóban megmutatom, hogyan töltsd le és add hozzá az Ozeki.Libs.Rest könyvtárat a saját projektedhez.

3. videó - Hogyan add hozzá az Ozeki.Libs.Rest könyvtárat a saját alkalmazásodhoz (Videó útmutató)

Függőségek

Fontos megemlíteni, hogy az Ozeki.Libs.Rest könyvtárnak vannak függőségei. A használatához ezeket a függőségeket hozzá kell adnod a Gradle Scripts-hez.

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'
	

1. kód - A felvenni kívánt függőségek listája.

Hogyan adjuk hozzá a szükséges függőségeket (Videó útmutató)

Ebben a videóban bemutatjuk a függőségek projekthez adásának folyamatát. A videó a kód másolásával kezdődik ebből az útmutatóból, és a függőségek projektben való hozzáadásával ér véget. Ezek a függőségek a projekt létfontosságú részei. Ezek nélkül az Ozeki.Libs.Rest nem fog működni. Ez a videó mindössze 53 másodperc, de könnyen érthető és követhető.

4. videó - Hogyan add hozzá a szükséges függőségeket (Videó útmutató)

Internet hozzáférés

Ahhoz, hogy az alkalmazásod képes legyen HTTP kérést küldeni, engedélyezned kell az internethez való csatlakozást.
A következő videóban megmutatom, hogyan engedélyezheted az internet hozzáférést a Kotlin alkalmazásodhoz.

<uses-permission android:name="android.permission.INTERNET" />
	

2. kód - Az internet hozzáférés engedélyezése a Kotlin alkalmazásodhoz.

android:usesCleartextTraffic="true"
	

3. kód - HTTP kérések küldésének engedélyezése

Hogyan adjunk internet kapcsolatot a projekthez (Videó útmutató)

Mindkét kódsort hozzá kell adnod az AndroidManifest.xml fájlhoz.
A következő videóban megmutatom, hová kell beillesztened a korábbi kódokat. A videó a kód másolásával kezdődik, és az internetkapcsolat sikeres hozzáadásával ér véget. Ez a videó pontos és könnyen követhető.

5. videó - Hogyan engedélyezd az internet hozzáférést az alkalmazásodhoz (Videó útmutató)

Végső gondolatok

Ez a cikk elmagyarázza, hogyan használd a megadott Kotlin kódot SMS üzenetek törléséhez az Ozeki SMS Gateway HTTP felhasználójával. Ha nap mint nap sok SMS üzenettel kell foglalkoznod, és közülük számos nemkívánatos, akkor az itt bemutatott eljárás nélkülözhetetlen számodra. A gyakran tisztított, így kiegyensúlyozott tárhely minden területen fontos, lehetővé téve a dinamikusabb, hatékonyabb munkát.

Folytasd ezt az oktató utat az Ozeki weboldalán, válassz a számos más cikk közül. Olvasd el a Github: Koltin SMS API című cikket, amely egy szabadon használható repozitóriumról szól.

Töltsd le most az Ozeki SMS Gateway-t és használd fel, amit tanultál!

More information