Saya mencoba membuat aplikasi untuk memonitor pesan SMS yang masuk, dan meluncurkan program melalui SMS yang masuk, juga harus membaca konten dari SMS.
Alur kerja:
- SMS dikirim ke perangkat Android
- Aplikasi yang dapat dieksekusi sendiri
- Baca informasi SMS
android
sms
android-service
iShader
sumber
sumber
Jawaban:
Catatan: Dalam file manifes Anda tambahkan BroadcastReceiver-
Tambahkan izin ini:
sumber
SMS_RECEIVED
siaran dalam 4.4+, dan, karena siaran itu tidak dapat dibatalkan, itu lebih pasti daripada di versi sebelumnya.Perhatikan bahwa pada beberapa perangkat kode Anda tidak akan berfungsi tanpa android: priority = "1000" di filter maksud:
Dan berikut ini beberapa optimasi:
Catatan :
Nilai harus bilangan bulat, seperti "100". Angka yang lebih tinggi memiliki prioritas yang lebih tinggi. Nilai default adalah 0. Nilai harus lebih besar dari -1000 dan kurang dari 1000.
Ini tautannya.
sumber
android:priority
tidak boleh lebih tinggi dari1000
(atau kurang dari-1000
).@Mike M. dan saya menemukan masalah dengan jawaban yang diterima (lihat komentar kami):
Pada dasarnya, tidak ada gunanya menelusuri for loop jika kita tidak menyatukan pesan multi bagian setiap kali:
Perhatikan bahwa kita hanya mengatur
msgBody
nilai string dari masing-masing bagian pesan, apa pun indeks kita, yang membuat seluruh titik perulangan melalui bagian-bagian berbeda dari pesan SMS tidak berguna, karena itu hanya akan diatur ke bagian paling nilai indeks terakhir. Sebaliknya, kita harus menggunakan+=
, atau sebagai Mike mencatat,StringBuilder
:Secara keseluruhan, inilah yang tampak seperti kode penerima SMS saya:
Hanya menempatkan jawaban ini di luar sana kalau-kalau ada orang yang memiliki kebingungan yang sama.
sumber
Inilah yang saya gunakan!
sumber
Jika Anda ingin menangani niat pada aktivitas yang dibuka, Anda dapat menggunakan PendintIntent (Langkah-langkah lengkap di bawah):
nyata:
onNewIntent:
izin:
sumber
Jika seseorang merujuk cara melakukan fitur yang sama (membaca OTP menggunakan SMS yang diterima) di Xamarin Android seperti saya:
Tambahkan kode ini ke file AndroidManifest.xml Anda:
Kemudian buat kelas BroadcastReveiver Anda di Proyek Android Anda.
Daftarkan kelas BroadcastReceiver ini di kelas MainActivity Anda di Proyek Android:
sumber
Terima kasih kepada @Vineet Shukla (jawaban yang diterima) dan @Ruchir Baronia (menemukan masalah dalam jawaban yang diterima), di bawah ini adalah
Kotlin
versinya:Tambahkan izin:
Daftarkan BroadcastReceiver di AndroidManifest:
Tambahkan implementasi untuk BroadcastReceiver:
Kadang-kadang peristiwa kebakaran dua kali jadi saya tambahkan
mLastTimeReceived = System.currentTimeMillis()
sumber
implementasi siaran di Kotlin:
Catatan: Dalam file manifes Anda tambahkan BroadcastReceiver-
Tambahkan izin ini:
sumber
Jawaban yang diterima adalah benar dan bekerja pada Android versi lama di mana Android OS meminta izin pada pemasangan aplikasi, namun pada versi yang lebih baru Android tidak langsung bekerja karena Android OS yang lebih baru meminta izin selama runtime ketika aplikasi membutuhkan fitur itu . Oleh karena itu untuk menerima SMS pada versi Android yang lebih baru menggunakan teknik yang disebutkan dalam programmer jawaban yang diterima juga harus menerapkan kode yang akan memeriksa dan meminta izin dari pengguna selama runtime. Dalam hal ini izin memeriksa fungsionalitas / kode dapat diimplementasikan di onCreate () dari aktivitas pertama aplikasi. Cukup salin dan tempel berikut dua metode dalam aktivitas pertama Anda dan panggil metode checkForSmsReceivePermissions () di akhir onCreate ().
sumber