Jak usunąć SMS w Kotlinie
Najprostszym sposobem wysyłania SMS z Kotlina jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Korzystając z tego API, wysyłasz wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość w formacie json. Bramka SMS wyśle tę wiadomość na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie. (Rysunek 1)
Kod Kotlin do usuwania SMS
Poniższy przykładowy kod SMS w Kotlinie demonstruje, jak można usunąć wiadomość SMS za pomocą interfejsu HTTP REST SMS API Ozeki SMS Gateway przy użyciu biblioteki Kotlin Ozeki.Libs.Rest. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym z Twoich projektów.
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="Usuń" 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="Logi:" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/folderCategories" /> </androidx.constraintlayout.widget.ConstraintLayout>
Jak używać przykładu SMS w Kotlinie:
Możesz użyć klasy MessageApi, aby usunąć wiadomość SMS z bramki SMS. Twoje żądanie zostanie przesłane do Bramki SMS z Twojego urządzenia przez internet.
Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: DeleteSms.kt.zip (149Kb)
Co znajduje się w pliku DeleteSms.kt.zip?
Plik DeleteSms.kt.zip zawiera przykładowy projekt, który zawiera bibliotekę Ozeki.Libs.Rest. Dzięki tej bibliotece możesz wysyłać, usuwać, oznaczać i odbierać wiadomości SMS poprzez utworzenie MessageApi i użycie metod Send(), Delete(), Mark() oraz Receive(). (Rysunek 2)
Jak usunąć SMS za pomocą Kotlin (Szybkie kroki)
Aby usunąć SMS za pomocą Kotlin:
- Zainstaluj Ozeki SMS Gateway
- Podłącz Ozeki SMS Gateway do sieci komórkowej
- Wyślij testową wiadomość SMS z interfejsu Ozeki
- Utwórz użytkownika HTTP SMS API
- Android Studio
- Pobierz powyższy przykładowy projekt
- Utwórz SMS poprzez utworzenie nowego obiektu Message
- Utwórz API do usunięcia wiadomości SMS
- Użyj metody Delete, aby usunąć wiadomość
- Odczytaj odpowiedź na konsoli
- Sprawdź logi w bramce SMS
Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API
Aby móc usuwać SMS za pomocą Kotlin, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod Kotlin w Android Studio. Po instalacji kolejnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.
Po skonfigurowaniu środowiska możesz uruchomić swój kod Kotlin.
URL API HTTP do wysyłania SMS z Kotlin
Aby usunąć SMS za pomocą Kotlin, Twój kod Kotlin będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Pamiętaj, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP Twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowany na tym samym komputerze, na którym działa aplikacja SMS w JavaScript, może to być 127.0.0.1. Jeśli jest zainstalowany na innym komputerze, powinien to być adres IP tego komputera.
http://127.0.0.1:9509/api?action=rest
Uwierzytelnianie HTTP do usuwania SMS za pomocą Kotlin
Aby uwierzytelnić klienta SMS w Kotlin, musisz wysłać nazwę użytkownika i hasło w zakodowanym ciągu base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Kotlin możesz użyć następującego kodu do wykonania tego kodowania:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==. Aby wysłać
Nagłówek żądania HTTP do usuwania SMS z Kotlin
Aby usunąć wiadomość SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Pamiętaj, że zawieramy nagłówek Content-Type i Authorization.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Żądanie HTTP do odbierania SMS za pomocą Kotlin
Aby usunąć SMS, Twoja aplikacja Kotlin wyśle żądanie HTTP podobne do poniższego. Pamiętaj, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to ciąg danych zakodowany w JSON. Zawiera ID wiadomości, które chcesz usunąć.
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" ] }
Odpowiedź HTTP otrzymana przez przykładową aplikację SMS w Kotlin
Gdy bramka SMS otrzyma to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, aby wskazać, czy żądanie wysłania SMS zakończyło się sukcesem czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć przydatne informacje o przesłaniu wiadomości.
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" ] } }
Ten film pokazuje, jak pobrać i użyć projektu DeleteSms.kt. Po otwarciu przykładowego projektu możesz zauważyć, że istnieje pakiet o nazwie Ozeki.Libs.Rest. To właśnie ten pakiet zawiera MessageApi i wszystko, czego potrzebujesz, aby usunąć wiadomość SMS za pomocą Kotlin.
Jak sprawdzić, czy żądanie zostało zaakceptowane przez użytkownika HTTP
Po przesłaniu SMS-a warto sprawdzić w bramce SMS, co zostało odebrane. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP z konsoli zarządzania Ozeki SMS Gateway. Na końcu powyższego filmu możesz zobaczyć, jak sprawdzić, czy żądanie zostało odebrane przez http_user. (Rysunek 3)
Korzystanie z aplikacji na telefonie
Na Rysunku 4 możesz zobaczyć, jak wygląda usuwanie wiadomości SMS podczas korzystania z aplikacji na telefonie. Wklej identyfikator wiadomości do pola tekstowego 'ID' i naciśnij przycisk 'Usuń'. Spowoduje to usunięcie wybranej wiadomości. Jeśli proces zakończy się pomyślnie, w sekcji 'Logi' zobaczysz komunikat 'true'.
Jak dodać Ozeki.Libs.Rest do własnego projektu
Bibliotekę Ozeki.Libs.Rest można pobrać, używać i modyfikować bezpłatnie.
Pobierz: Ozeki.Libs.Rest.kt.zip (7.66Kb)
Jeśli zdecydujesz się stworzyć swoją aplikację samodzielnie tylko z biblioteką Ozeki.Libs.Rest, należy wprowadzić kilka zmian w podstawowej aplikacji. Aby użyć biblioteki Ozeki.Libs.Rest, należy umieścić ją w folderze java głównego katalogu.
W poniższym filmie pokażę, jak pobrać i dodać bibliotekę Ozeki.Libs.Rest do własnego projektu.
Zależności
Warto wspomnieć, że biblioteka Ozeki.Libs.Rest ma pewne zależności. Aby z niej korzystać, należy dodać te zależności 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 dodać potrzebne zależności (Samouczek wideo)
W tym filmie przedstawiamy proces dodawania zależności do projektu. Film rozpocznie się od skopiowania kodu z tej strony samouczka i zakończy się zależnościami w projekcie. Te zależności są kluczowymi częściami projektu. Bez nich Ozeki.Libs.Rest nie będzie działać. Ten film trwa tylko 53 sekundy, ale jest łatwy do zrozumienia i śledzenia.
Dostęp do internetu
Aby umożliwić aplikacji wysyłanie żądań HTTP, należy włączyć jej dostęp do internetu.
W poniższym filmie pokażę, jak włączyć dostęp do internetu dla aplikacji Kotlin.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
Jak dodać połączenie internetowe do projektu (Samouczek wideo)
Należy dodać obie te linie do pliku AndroidManifest.xml.
W następnym filmie pokażę, gdzie należy wprowadzić wcześniejsze kody. Film rozpocznie się od skopiowania kodu i doprowadzi do pomyślnie dodanego połączenia internetowego. Ten film jest dokładny i łatwy do śledzenia.
Końcowe przemyślenia
W tym artykule opisano, jak użyć podanego kodu Kotlin do usuwania wiadomości SMS z użytkownikiem HTTP bramki SMS Ozeki. Jeśli codziennie masz do czynienia z wieloma wiadomościami SMS, a część z nich jest niechciana, przedstawiona tutaj procedura jest dla Ciebie niezbędna. Często czyszczona, a przez to zrównoważona pamięć jest bardzo ważna w każdej dziedzinie, ponieważ umożliwia bardziej dynamiczną i efektywną pracę.
Kontynuuj tę pouczającą podróż na stronie Ozeki, wybierając spośród wielu innych artykułów. Przeczytaj artykuł zatytułowany Github: Koltin SMS API, który dotyczy jednego z repozytoriów, z których możesz swobodnie korzystać.
Pobierz już teraz bramkę SMS Ozeki i wykorzystaj zdobytą wiedzę!
More information
- Kotlin wyślij SMS za pomocą REST API HTTP (przykład kodu)
- Kotlin wyślij wiele SMS za pomocą REST API HTTP (przykład kodu)
- Kotlin zaplanuj SMS za pomocą REST API HTTP (przykład kodu)
- Kotlin odbierz SMS za pomocą REST API HTTP (przykład kodu)
- Kotlin usuń SMS za pomocą REST API HTTP (przykład kodu)
- Github: Kotlin SMS API