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)
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.
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="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)
Ako zmazať SMS pomocou Kotlin (Rýchle kroky)
Ak chcete zmazať SMS pomocou Kotlin:
- Nainštalujte Ozeki SMS Gateway
- Pripojte Ozeki SMS Gateway k mobilnej sieti
- Odošlite testovaciu SMS z Ozeki GUI
- Vytvorte HTTP SMS API používateľa
- Android Studio
- Stiahnite si vyššie uvedený príklad projektu
- Vytvorte SMS vytvorením nového objektu Message
- Vytvorte API na zmazanie SMS správy
- Použite metódu Delete na zmazanie vašej správy
- Prečítajte si odpoveď na konzole
- 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.
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)
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'.
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.
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'
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é.
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" />
android:usesCleartextTraffic="true"
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é.
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
- 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