Ako vymazať SMS v Kotline

Najjednoduchší spôsob, ako odoslať SMS z Kotlinu, je použiť vstavanú HTTP/Rest SMS API Ozeki SMS Gateway. Keď použijete toto API, budete odosielať SMS správy vydaním HTTP POST požiadavky na SMS bránu. HTTP POST požiadavka bude obsahovať správu formátovanú v json formáte. SMS brána odošle túto SMS príjemcovi a vráti HTTP 200 OK odpoveď na vašu požiadavku. (Obrázok 1)

ako vymazať sms v kotline
Obrázok 1 - Ako vymazať SMS v Kotline

Kotlin kód na vymazanie sms

Ukážka kódu Kotlin sms nižšie demonštruje, ako môžete vymazať SMS správu(y) pomocou http rest sms api Ozeki SMS Gateway pomocou knižnice Kotlin Ozeki.Libs.Rest. Táto knižnica je poskytovaná bezplatne a môžete ju použiť a upraviť v akomkoľvek z vašich projektov.

Video 1 - Ako stiahnuť príklad DeleteSms.kt.zip (Video návod)

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="Vymazať"
        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="Logy:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/folderCategories" />
</androidx.constraintlayout.widget.ConstraintLayout>
	

Ako použiť príklad Kotlin sms:

Môžete použiť triedu MessageApi na vymazanie SMS správy(y) z SMS brány. Vaša požiadavka bude presmerovaná na SMS bránu z vášho zariadenia cez internet.

Stiahnuť DeleteSms.kt

Zdrojový kód vysvetlený v tomto článku je možné stiahnuť, použiť a upravovať bezplatne.
Stiahnuť: DeleteSms.kt.zip (149Kb)

Čo obsahuje súbor DeleteSms.kt.zip?

Súbor DeleteSms.kt.zip obsahuje príklad projektu, ktorý má v sebe knižnicu Ozeki.Libs.Rest. S touto knižnicou môžete odosielať, mazať, označovať a prijímať SMS správy vytvorením MessageApi a použitím metód Send(), Delete(), Mark() a Receive(). (Obrázok 2)

príklad projektu na mazanie SMS pomocou Kotlin
Obrázok 2 - Adresár DeleteSms.kt

Ako zmazať SMS pomocou Kotlin (Rýchle kroky)

Ak chcete zmazať SMS pomocou Kotlin:

  1. Nainštalujte Ozeki SMS Gateway
  2. Pripojte Ozeki SMS Gateway k mobilnej sieti
  3. Odošlite testovaciu SMS z Ozeki GUI
  4. Vytvorte HTTP SMS API používateľa
  5. Android Studio
  6. Stiahnite si vyššie uvedený príklad projektu
  7. Vytvorte SMS vytvorením nového objektu Message
  8. Vytvorte API na zmazanie SMS správy
  9. Použite metódu Delete na zmazanie vašej správy
  10. Prečítajte si odpoveď na konzole
  11. Skontrolujte záznamy v SMS gatewey

Nainštalujte Ozeki SMS Gateway a vytvorte HTTP API používateľa

Ak chcete mazať SMS pomocou Kotlin, musíte najprv nainštalovať Ozeki SMS Gateway. SMS gateway je možné nainštalovať na rovnakom počítači, kde vyvíjate svoj Kotlin kód v Android Studiu. Po inštalácii je ďalším krokom pripojenie Ozeki SMS Gateway k mobilnej sieti. Môžete odoslať testovaciu SMS z Ozeki GUI, aby ste overili, že vaše mobilné pripojenie funguje. Posledným krokom na prípravu vášho prostredia je vytvorenie HTTP SMS API používateľa. Vytvorte používateľa s používateľským menom "http_user" a heslom "qwe123", aby príklad fungoval bez úprav.

Po nastavení prostredia môžete spustiť svoj Kotlin kód.

HTTP API URL na odosielanie SMS z Kotlin

Ak chcete mazať SMS pomocou Kotlin, váš Kotlin bude musieť odoslať HTTP požiadavku na SMS gateway. API URL je uvedené nižšie. Upozorňujeme, že IP adresa (127.0.0.1) by mala byť nahradená IP adresou vášho SMS gateway. Ak je Ozeki SMS Gateway nainštalovaný na rovnakom počítači, kde beží JavaScriptová SMS aplikácia, môže to byť 127.0.0.1. Ak je nainštalovaný na inom počítači, mala by to byť IP adresa toho počítača.

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

HTTP autentifikácia na mazanie SMS pomocou Kotlin

Na autentifikáciu Kotlin SMS klienta musíte odoslať používateľské meno a heslo v base64 kódovanom reťazci na server v HTTP požiadavke. Používa sa formát: base64(používateľské meno+":"+heslo). V Kotlin môžete na toto kódovanie použiť nasledujúci kód:

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

Napríklad, ak zakódujete používateľské meno 'http_user' a heslo 'qwe123', dostanete nasledujúci base64 kódovaný reťazec: aHR0cF91c2VyOnF3ZTEyMw==. Na odoslanie

Hlavička HTTP požiadavky na mazanie SMS z Kotlin

Ak chcete zmazať SMS správu(y), musíte do hlavičky HTTP požiadavky zahrnúť nasledujúce riadky. Upozorňujeme, že obsahujeme hlavičku Content-Type a Authorization.

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

HTTP požiadavka na prijatie SMS pomocou Kotlin

Ak chcete zmazať SMS, vaša Kotlin aplikácia odošle HTTP požiadavku podobnú nižšie uvedenej. Upozorňujeme, že táto požiadavka obsahuje časť hlavičky HTTP a časť tela HTTP. Telo HTTP je reťazec dát zakódovaný v JSON. Obsahuje ID správ, ktoré chcete zmazať.

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 odpoveď prijatá Kotlin SMS príkladom

Keď SMS gateway prijme túto požiadavku, vygeneruje HTTP odpoveď. HTTP odpoveď bude obsahovať stavový kód, ktorý indikuje, či bola požiadavka na odoslanie SMS úspešná alebo nie. Vráti tiež štruktúru zakódovanú v JSON, ktorá vám poskytne užitočné informácie o odoslaní správy.

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

Ako vymazať SMS správy pomocou Kotlinu pomocou SMS API a príkladového projektu vyššie (Video tutoriál)

Toto video vám ukáže, ako stiahnuť a použiť projekt DeleteSms.kt. Keď otvoríte príkladový projekt, môžete si všimnúť, že obsahuje balík s názvom Ozeki.Libs.Rest. Tento balík obsahuje MessageApi a všetko potrebné na vymazanie SMS správy(y) pomocou Kotlinu.

Video 2 - Ako vymazať SMS pomocou Kotlin kódu vyššie (Video tutoriál)

Ako skontrolovať, či bola požiadavka prijatá HTTP používateľom

Po odoslaní SMS je dobré skontrolovať váš SMS gateway, aby ste videli, čo prijal. Log môžete skontrolovať otvorením detailov HTTP používateľa v konzole na správu Ozeki SMS Gateway. Na konci vyššie uvedeného videa môžete vidieť, ako skontrolovať, či bola požiadavka prijatá http_user. (Obrázok 3)

kotlin projekt na prijímanie sms správ
Obrázok 3 - Projekt DeleteSms.kt v Android Studiu

Použitie aplikácie na telefóne

Na obrázku 4 môžete vidieť, ako vyzerá vymazanie SMS správy pri používaní aplikácie na telefóne. Vložte ID správy do textového poľa 'ID' a stlačte tlačidlo 'Vymazať'. Tým sa vymaže vybraná správa. Ak bol proces úspešne dokončený, v sekcii 'Logy' uvidíte správu 'true'.

príkladová kotlin aplikácia na prijímanie sms správ
Obrázok 4 - Príkladová aplikácia DeleteSms pred a po stiahnutí správ

Ako pridať Ozeki.Libs.Rest do vlastného projektu

Knižnicu Ozeki.Libs.Rest môžete stiahnuť, používať a upravovať bezplatne.
Stiahnuť: Ozeki.Libs.Rest.kt.zip (7.66Kb)

Ak sa rozhodnete vytvoriť svoju aplikáciu sami len s knižnicou Ozeki.Libs.Rest, je potrebné vykonať niekoľko zmien v základnej aplikácii. Na použitie knižnice Ozeki.Libs.Rest ju musíte umiestniť do priečinka java hlavného adresára
V nasledujúcom videu vám ukážem, ako stiahnuť a pridať knižnicu Ozeki.Libs.Rest do vlastného projektu.

Video 3 - Ako pridať knižnicu Ozeki.Libs.Rest do vlastnej aplikácie (Video tutoriál)

Závislosti

Je dôležité spomenúť, že knižnica Ozeki.Libs.Rest má niektoré závislosti. Na jej použitie musíte tieto závislosti pridať do 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'
	

Kód 1 - Zoznam závislostí, ktoré je potrebné zahrnúť.

Ako pridať potrebné závislosti (Video tutoriál)

V tomto videu vám predstavíme proces pridávania závislostí do vášho projektu. Video začne kopírovaním kódu z tejto stránky tutoriálu a skončí s pridanými závislosťami do projektu. Tieto závislosti sú kľúčovými časťami projektu. Bez nich Ozeki.Libs.Rest nebude fungovať. Toto video trvá len 53 sekúnd, ale je ľahko pochopiteľné a nasledovateľné.

Video 4 - Ako pridať potrebné závislosti (Video tutoriál)

Prístup k internetu

Aby vaša aplikácia mohla odosielať HTTP požiadavky, musíte jej povoliť pripojenie k internetu.
V nasledujúcom videu vám ukážem, ako povoliť prístup k internetu pre vašu Kotlin aplikáciu.

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

Kód 2 - Povolenie prístupu k internetu pre vašu Kotlin aplikáciu.

android:usesCleartextTraffic="true"
	

Kód 3 - Umožnenie odosielania http požiadaviek

Ako pridať internetové pripojenie do projektu (Video tutoriál)

Musíte pridať oba tieto riadky do súboru AndroidManifest.xml.
V ďalšom videu vám ukážem, kam by ste mali vložiť vyššie uvedené kódy. Video začne kopírovaním kódu a prevedie vás k úspešne pridanému internetovému pripojeniu. Toto video je presné a ľahko nasledovateľné.

Video 5 - Ako povoliť prístup k internetu pre vašu aplikáciu (Video tutoriál)

Záverečné myšlienky

Tento článok vám ukazuje, ako použiť daný Kotlin kód na odstránenie SMS správ s HTTP používateľom Ozeki SMS Gateway. Ak sa denne musíte zaoberať veľkým množstvom SMS správ a niektoré z nich sú nechcené, postup uvedený tu je pre vás nevyhnutný. Často vyčistené, a teda vyvážené úložisko je veľmi dôležité vo všetkých oblastiach, umožňuje dynamickejšiu a efektívnejšiu prácu.

Pokračujte v tejto poučnej ceste na webovej stránke Ozeki, vyberte si z mnohých ďalších článkov. Prečítajte si článok s názvom Github: Kotlin SMS API, ktorý sa zaoberá jedným z úložísk, ktoré môžete slobodne použiť.

Stiahnite si Ozeki SMS Gateway hneď teraz a použite to, čo ste sa naučili!

More information