Jak smazat SMS v Kotlinu
Nejjednodušší způsob, jak odesílat SMS z Kotlinu, je použít vestavěnou HTTP/Rest SMS API Ozeki SMS Gateway. Když použijete toto API, budete odesílat SMS zprávy vytvořením HTTP Post požadavku na SMS bránu. HTTP Post požadavek bude obsahovat zprávu ve formátu JSON. SMS brána odešle tuto SMS na cílový telefon a vrátí HTTP 200 OK odpověď na váš požadavek. (Obrázek 1)
Kotlin kód pro smazání SMS
Níže uvedený ukázkový kód v Kotlinu demonstruje, jak můžete smazat SMS zprávu(y) pomocí HTTP REST SMS API Ozeki SMS Gateway s využitím knihovny Kotlin Ozeki.Libs.Rest. Tato knihovna je poskytována zdarma a můžete ji používat a upravovat v jakémkoli svém projektu.
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="Smazat" 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>
Jak používat příklad SMS v Kotlinu:
Můžete použít třídu MessageApi k smazání SMS zpráv(y) z SMS brány. Váš požadavek bude přesměrován na SMS bránu z vašeho zařízení přes internet.
Stáhnout DeleteSms.kt
Zdrojový kód vysvětlený v tomto článku lze zdarma stáhnout, použít a upravit.
Stáhnout: DeleteSms.kt.zip (149Kb)
Co obsahuje soubor DeleteSms.kt.zip?
Soubor DeleteSms.kt.zip obsahuje ukázkový projekt, který obsahuje knihovnu Ozeki.Libs.Rest. S touto knihovnou můžete odesílat, mazat, označovat a přijímat SMS zprávy vytvořením MessageApi a použitím metod Send(), Delete(), Mark() a Receive(). (Obrázek 2)
Jak smazat SMS pomocí Kotlin (Rychlé kroky)
Pro smazání SMS pomocí Kotlin:
- Nainstalujte Ozeki SMS Gateway
- Připojte Ozeki SMS Gateway k mobilní síti
- Odešlete testovací SMS z Ozeki GUI
- Vytvořte HTTP SMS API uživatele
- Android Studio
- Stáhněte si výše uvedený ukázkový projekt
- Vytvořte SMS vytvořením nového objektu Message
- Vytvořte API pro smazání SMS zprávy
- Použijte metodu Delete pro smazání vaší zprávy
- Přečtěte si odpověď na konzoli
- Zkontrolujte protokoly v SMS gateway
Nainstalujte Ozeki SMS Gateway a vytvořte HTTP API uživatele
Abyste mohli mazat SMS pomocí Kotlin, nejprve musíte nainstalovat Ozeki SMS Gateway. SMS gateway lze nainstalovat na stejný počítač, kde vyvíjíte svůj Kotlin kód v Android Studiu. Po instalaci je dalším krokem připojení Ozeki SMS Gateway k mobilní síti. Můžete odeslat testovací SMS z Ozeki GUI a ověřit, že vaše připojení k mobilní síti funguje. Posledním krokem k přípravě prostředí je vytvoření HTTP SMS API uživatele. Vytvořte uživatele s uživatelským jménem "http_user" a heslem "qwe123", aby ukázka fungovala bez úprav.
Po nastavení prostředí můžete spustit svůj Kotlin kód.
URL HTTP API pro odesílání SMS z Kotlin
Pro smazání SMS pomocí Kotlin bude váš Kotlin muset odeslat HTTP požadavek na SMS gateway. API URL je uvedeno níže. Poznámka: IP adresa (127.0.0.1) by měla být nahrazena IP adresou vaší SMS gateway. Pokud je Ozeki SMS Gateway nainstalován na stejném počítači, kde běží JavaScriptová SMS aplikace, může to být 127.0.0.1. Pokud je nainstalován na jiném počítači, měla by to být IP adresa tohoto počítače.
http://127.0.0.1:9509/api?action=rest
HTTP autentizace pro mazání SMS pomocí Kotlin
Pro ověření Kotlin SMS klienta musíte odeslat uživatelské jméno a heslo v base64 kódovaném řetězci na server v HTTP požadavku. Použitý formát je: base64(username+":"+password). V Kotlin můžete pro toto kódování použít následující kód:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Například pokud zakódujete uživatelské jméno 'http_user' a heslo 'qwe123', získáte následující base64 kódovaný řetězec: aHR0cF91c2VyOnF3ZTEyMw==. Pro odeslání
Hlavička HTTP požadavku pro smazání SMS z Kotlin
Pro smazání SMS zprávy(y) musíte do HTTP požadavku zahrnout následující řádky jako hlavičky. Poznámka: Zahrnujeme hlavičku Content-Type a Authorization.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP požadavek pro přijetí SMS pomocí Kotlin
Pro smazání SMS bude vaše Kotlin aplikace odesílat HTTP požadavek podobný tomu níže. Poznámka: Tento požadavek obsahuje část HTTP hlavičky a část HTTP těla. HTTP tělo je JSON kódovaný datový řetězec. Obsahuje ID zpráv, které chcete smazat.
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 odpověď přijatá Kotlin SMS příkladem
Jakmile SMS gateway obdrží tento požadavek, vygeneruje HTTP odpověď. HTTP odpověď bude obsahovat stavový kód, který indikuje, zda byl požadavek na odeslání SMS úspěšný nebo ne. Také vrátí JSON kódovanou strukturu, která vám poskytne užitečné detaily o odeslání zprá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" ] } }
Toto video vám ukáže, jak stáhnout a použít projekt DeleteSms.kt. Jakmile otevřete příklad projektu, můžete si všimnout, že tam je balíček s názvem Ozeki.Libs.Rest. Tento balíček obsahuje MessageApi a vše, co potřebujete k smazání SMS zprávy(y) pomocí Kotlinu.
Jak ověřit, že požadavek byl přijat HTTP uživatelem
Po odeslání SMS je dobré zkontrolovat váš SMS gateway, abyste viděli, co přijal. Protokol můžete zkontrolovat otevřením detailů HTTP uživatele z konzole pro správu Ozeki SMS Gateway. Na konci výše uvedeného videa uvidíte, jak zkontrolovat, zda požadavek přijal http_user. (Obrázek 3)
Použití aplikace na telefonu
Na obrázku 4 můžete vidět, jak vypadá smazání SMS zprávy při použití aplikace na telefonu. Vložte ID zprávy do textového pole 'ID' a stiskněte tlačítko 'Smazat'. Tím se smaže vybraná zpráva. Pokud byl proces úspěšně dokončen, uvidíte v sekci 'Logy' zprávu 'true'.
Jak přidat Ozeki.Libs.Rest do vlastního projektu
Knihovnu Ozeki.Libs.Rest lze stáhnout, používat a upravovat zdarma.
Stáhnout: Ozeki.Libs.Rest.kt.zip (7.66Kb)
Pokud se rozhodnete vytvořit svou aplikaci sami pouze s knihovnou Ozeki.Libs.Rest,
musíte v základní aplikaci změnit několik věcí.
Pro použití knihovny Ozeki.Libs.Rest ji musíte umístit do složky java
hlavního adresáře
V následujícím videu vám ukážu, jak stáhnout a přidat knihovnu Ozeki.Libs.Rest
do vašeho vlastního projektu.
Závislosti
Je důležité zmínit, že knihovna Ozeki.Libs.Rest má některé závislosti. Pro její použití musíte tyto závislosti přidat 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'
Jak přidat potřebné závislosti (Video návod)
V tomto videu vám představíme proces přidávání závislostí do vašeho projektu. Video začne kopírováním kódu z této stránky s návodem a skončí přidáním závislostí do projektu. Tyto závislosti jsou klíčové části projektu. Bez nich Ozeki.Libs.Rest nebude fungovat. Toto video trvá pouze 53 sekund, ale je snadno pochopitelné a sledovatelné.
Přístup k internetu
Aby vaše aplikace mohla odesílat
HTTP požadavky, musíte jí povolit
připojení k internetu.
V následujícím videu vám ukážu, jak povolit přístup k internetu
pro vaši Kotlin aplikaci.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
Jak přidat připojení k internetu do vašeho projektu (Video návod)
Musíte přidat oba tyto řádky do souboru AndroidManifest.xml.
V dalším videu vám ukážu, kam byste měli zadat výše uvedené kódy.
Video začne kopírováním kódu a dovede vás k úspěšně přidanému připojení k internetu.
Toto video je přesné a snadno sledovatelné.
Závěrečné myšlenky
Tento článek vám ukazuje, jak použít daný Kotlin kód k odstranění SMS zpráv pomocí HTTP uživatele brány Ozeki SMS Gateway. Pokud se denně potýkáte s mnoha SMS zprávami a některé z nich jsou nežádoucí, je zde uvedený postup pro vás nezbytný. Často čištěné, a tedy vyvážené úložiště je velmi důležité ve všech oblastech, umožňuje dynamičtější a efektivnější práci.
Pokračujte v této poučné cestě na webové stránce Ozeki a vyberte si z mnoha dalších článků. Přečtěte si článek s názvem Github: Kotlin SMS API, který pojednává o jednom z úložišť, které můžete volně používat.
Stáhněte si nyní Ozeki SMS Gateway a využijte to, co jste se naučili!
More information
- Kotlin odeslání SMS pomocí HTTP REST API (ukázka kódu)
- Kotlin odeslání více SMS pomocí HTTP REST API (ukázka kódu)
- Kotlin naplánování SMS pomocí HTTP REST API (ukázka kódu)
- Kotlin příjem SMS pomocí HTTP REST API (ukázka kódu)
- Kotlin smazání SMS pomocí HTTP REST API (ukázka kódu)
- Github: Kotlin SMS API