Kako izbrisati SMS v Kotlinu

Najenostavnejši način za pošiljanje SMS-ov iz Kotlina je uporaba vgrajenega HTTP/Rest SMS API-ja Ozeki SMS Gateway. Ko uporabljate ta API, boste pošiljali SMS sporočila z izdajo HTTP Post zahteve proti SMS prehodu. HTTP Post zahteva bo vsebovala sporočilo v json formatu. SMS prehod bo poslal ta SMS prejemniku in vrnil HTTP 200 OK odgovor na vašo zahtevo. (Slika 1)

kako izbrisati sms v kotlinu
Slika 1 - Kako izbrisati SMS v Kotlinu

Kotlin koda za brisanje SMS-ov

Spodnji Kotlin SMS koda primer prikazuje, kako lahko izbrišete SMS sporočilo(a) z uporabo http rest sms api Ozeki SMS Gateway z uporabo knjižnice Kotlin Ozeki.Libs.Rest. Ta knjižnica vam je na voljo brezplačno in jo lahko uporabljate in spreminjate v katerem koli od vaših projektov.

Video 1 - Kako prenesti DeleteSms.kt.zip primer (Video vadnica)

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="Izbriši"
        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="Dnevniki:"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/folderCategories" />
</androidx.constraintlayout.widget.ConstraintLayout>
	

Kako uporabiti Kotlin SMS primer:

Uporabite lahko razred MessageApi za brisanje SMS sporočil(a) iz SMS prehoda. Vaša zahteva bo posredovana SMS prehodu z vaše naprave prek interneta.

Izvorna koda, razložena v tem članku, je na voljo za brezplačen prenos, uporabo in spreminjanje.
Prenos: DeleteSms.kt.zip (149Kb)

Kaj je v datoteki DeleteSms.kt.zip?

Datoteka DeleteSms.kt.zip vsebuje primer projekta, ki vključuje knjižnico Ozeki.Libs.Rest. S to knjižnico lahko pošiljate, brišete, označujete in prejemate SMS sporočila z ustvarjanjem MessageApi in uporabo metod Send(), Delete(), Mark() in Receive(). (Slika 2)

primer projekta za brisanje SMS s Kotlinom
Slika 2 - Mapo DeleteSms.kt

Kako izbrisati SMS s Kotlinom (Hitri koraki)

Za brisanje SMS s Kotlinom:

  1. Namestite Ozeki SMS Gateway
  2. Povežite Ozeki SMS Gateway z mobilnim omrežjem
  3. Pošljite testno SMS iz Ozeki GUI
  4. Ustvarite uporabnika HTTP SMS API
  5. Android Studio
  6. Prenesite zgornji primer projekta
  7. Ustvarite SMS z ustvarjanjem novega objekta Message
  8. Ustvarite API za brisanje SMS sporočila
  9. Uporabite metodo Delete za brisanje vašega sporočila
  10. Preberite odzivno sporočilo na konzoli
  11. Preverite dnevnike v SMS gatewayu
Namestite Ozeki SMS Gateway in ustvarite uporabnika HTTP API

Za brisanje SMS s Kotlinom morate najprej namestiti Ozeki SMS Gateway. SMS gateway lahko namestite na isti računalnik, kjer razvijate svojo kodo Kotlin v Android Studiu. Po namestitvi je naslednji korak povezovanje Ozeki SMS Gateway z mobilnim omrežjem. Lahko ustvarjanje uporabnika HTTP SMS API. Ustvarite uporabnika z uporabniškim imenom "http_user" in geslom "qwe123", da primer deluje brez sprememb.

Ko je okolje pripravljeno, lahko zaženete svojo kodo Kotlin.

URL HTTP API za pošiljanje SMS s Kotlinom

Za brisanje SMS s Kotlinom mora vaša koda Kotlin poslati HTTP zahtevo k SMS gatewayu. API URL je prikazan spodaj. Upoštevajte, da je treba IP naslov (127.0.0.1) zamenjati z IP naslovom vašega SMS gatewaya. Če je Ozeki SMS Gateway nameščen na istem računalniku, kjer teče JavaScript SMS aplikacija, lahko to ostane 127.0.0.1. Če je nameščen na drugem računalniku, mora biti to IP naslov tega računalnika.

http://127.0.0.1:9509/api?action=rest
	
HTTP avtentikacija za brisanje SMS s Kotlinom

Za avtentikacijo SMS odjemalca Kotlin morate poslati uporabniško ime in geslo v base64 kodiranem nizu na strežnik v HTTP zahtevi. Uporabljen format je: base64(username+":"+password). V Kotlinu lahko za to kodiranje uporabite naslednjo kodo:

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

Na primer, če kodirate uporabniško ime 'http_user' in geslo 'qwe123', boste prejeli naslednji base64 kodiran niz: aHR0cF91c2VyOnF3ZTEyMw==. Za pošiljanje

HTTP glava zahteve za brisanje SMS s Kotlinom

Za brisanje SMS sporočil(a) morate vključiti naslednje vrstice kot glave v HTTP zahtevo. Upoštevajte, da vključujemo vsebinski tip in glavo Authorization.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
HTTP zahteva za prejem SMS s Kotlinom

Za brisanje SMS bo vaša aplikacija Kotlin poslala HTTP zahtevo, podobno spodnji. Upoštevajte, da ta zahteva vsebuje del glave HTTP in del telesa HTTP. Telo HTTP je JSON kodiran podatkovni niz. Vsebuje ID-je sporočil, ki jih želite izbrisati.

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 odziv, prejet s primerom SMS v Kotlinu

Ko SMS gateway prejme to zahtevo, bo ustvaril HTTP odziv. HTTP odziv bo vseboval statusno kodo, ki označuje, ali je bila zahteva za oddajo SMS uspešna ali ne. Prav tako bo vrnil JSON kodirano strukturo, ki vam bo zagotovila koristne podrobnosti o oddaji sporočila.

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

Kako izbrisati SMS sporočila s Kotlinom z uporabo SMS API-ja in zgornjega primer projekta (Video vadnica)

Ta video prikazuje, kako prenesti in uporabiti projekt DeleteSms.kt. Ko odprete primer projekta, boste morda opazili, da obstaja paket z imenom Ozeki.Libs.Rest. To je paket, ki vsebuje MessageApi in vse, kar potrebujete za brisanje SMS sporočil s Kotlinom.

Video 2 - Kako izbrisati SMS s kodo Kotlin zgoraj (Video vadnica)

Kako preveriti, ali je zahteva sprejeta s strani HTTP uporabnika

Po oddaji SMS-a je dobro preveriti vaš SMS prehod, da vidite, kaj je prejel. Dnevnik lahko preverite tako, da odprete podrobnosti HTTP uporabnika v konzoli za upravljanje Ozeki SMS prehoda. Na koncu zgornjega videa lahko vidite, kako preveriti, ali je zahteva prejeta s strani http_userja. (Slika 3)

kotlin projekt za prejemanje sms sporočil
Slika 3 - Projekt DeleteSms.kt v Android Studiu

Uporaba aplikacije na telefonu

Na sliki 4 lahko vidite, kako izgleda brisanje SMS sporočila, ko uporabljate aplikacijo na telefonu. Prilepite ID sporočila v polje 'ID' in pritisnite gumb 'Izbriši'. Izbrisalo bo izbrano sporočilo. Če je bil postopek uspešno izveden, boste v razdelku 'Dnevniki' videli sporočilo 'true'.

primer kotlin aplikacije za prejemanje sms sporočil
Slika 4 - Primer aplikacije DeleteSms pred in po prejemu sporočil

Kako dodati Ozeki.Libs.Rest v svoj projekt

Knjižnico Ozeki.Libs.Rest lahko brezplačno prenesete, uporabljate in spreminjate.
Prenos: Ozeki.Libs.Rest.kt.zip (7.66Kb)

Če se odločite ustvariti svojo aplikacijo sami le s knjižnico Ozeki.Libs.Rest, je nekaj stvari, ki jih morate spremeniti v osnovni aplikaciji. Za uporabo knjižnice Ozeki.Libs.Rest jo morate postaviti v mapo java glavnega imenika
V naslednjem videu vam bom pokazal, kako prenesti in dodati knjižnico Ozeki.Libs.Rest v svoj projekt.

Video 3 - Kako dodati knjižnico Ozeki.Libs.Rest v svoj projekt (Video vadnica)

Odvisnosti

Pomembno je omeniti, da ima knjižnica Ozeki.Libs.Rest nekaj odvisnosti. Za njeno uporabo morate te odvisnosti dodati v 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'
	

Koda 1 - Seznam odvisnosti, ki jih morate vključiti.

Kako dodati potrebne odvisnosti (Video vadnica)

V tem videu vam predstavljamo postopek dodajanja odvisnosti v vaš projekt. Video se bo začel s kopiranjem kode s te strani vadnice in končal z odvisnostmi v projektu. Te odvisnosti so ključni deli projekta. Brez njih Ozeki.Libs.Rest ne bo deloval. Ta video je dolg le 53 sekund, vendar je enostaven za razumevanje in sledenje.

Video 4 - Kako dodati potrebne odvisnosti (Video vadnica)

Dostop do interneta

Da bo vaša aplikacija lahko pošiljala HTTP zahteve, morate omogočiti svoji aplikaciji povezavo z internetom.
V naslednjem videu vam bom pokazal, kako omogočiti dostop do interneta za vašo Kotlin aplikacijo.

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

Koda 2 - Za omogočanje dostopa do interneta za vašo Kotlin aplikacijo.

android:usesCleartextTraffic="true"
	

Koda 3 - Da omogoči pošiljanje http zahtev

Kako dodati internetno povezavo v svoj projekt (Video vadnica)

Obe vrstici morate dodati v datoteko AndroidManifest.xml.
V naslednjem videu vam bom pokazal, kam vnesti prej navedene kode. Video se bo začel s kopiranjem kode in vas popelje do uspešno dodane internetne povezave. Ta video je natančen in enostaven za sledenje.

Video 5 - Kako omogočiti dostop do interneta za vašo aplikacijo (Video vadnica)

Zaključne misli

Ta članek vam pove, kako uporabiti dano kodo Kotlin za brisanje SMS sporočil z uporabnikom HTTP v Ozeki SMS Gateway. Če se vsak dan ukvarjate s številnimi SMS sporočili in so mnoga od njih neželena, je tukaj prikazani postopek nujen za vas. Pogosto počiščena in s tem uravnotežena shramba je zelo pomembna na vseh področjih, omogoča bolj dinamično in učinkovito delo.

Nadaljujte to poučno potovanje na spletni strani Ozeki, izberite med številnimi drugimi članki. Preberimo članek z naslovom Github: Koltin SMS API, ki govori o enem od odlagališč, ki jih lahko prosto uporabljate.

Prenesite Ozeki SMS Gateway zdaj in uporabite, kar ste se naučili!

More information