Skip to content

Commit

Permalink
added Regex to find amout in conversations
Browse files Browse the repository at this point in the history
  • Loading branch information
imabhishekkumar committed Dec 16, 2019
1 parent 4bbc4c0 commit 9119f7e
Show file tree
Hide file tree
Showing 7 changed files with 127 additions and 4 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tech.risinglight.financebuddy">

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ExpenseManagerActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
41 changes: 41 additions & 0 deletions app/src/main/java/tech/risinglight/financebuddy/Conversation.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package tech.risinglight.financebuddy

import android.content.Context
import android.provider.Telephony
import java.util.*
import kotlin.collections.ArrayList

class Conversation(val number: String, val message: List<Message>)
class Message(val number: String, val body: String, val date: Date)

fun getSmsConversation(context: Context, number: String? = null, completion: (conversations: List<Conversation>?) -> Unit) {
val cursor = context.contentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null, null)

val numbers = ArrayList<String>()
val messages = ArrayList<Message>()
var results = ArrayList<Conversation>()

while (cursor != null && cursor.moveToNext()) {
val smsDate = cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.DATE))
val number = cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.ADDRESS))
val body = cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.BODY))

numbers.add(number)
messages.add(Message(number, body, Date(smsDate.toLong())))
}

cursor?.close()

numbers.forEach { number ->
if (results.find { it.number == number } == null) {
val msg = messages.filter { it.number == number }
results.add(Conversation(number = number, message = msg))
}
}

if (number != null) {
results = results.filter { it.number == number } as ArrayList<Conversation>
}

completion(results)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package tech.risinglight.financebuddy

import android.database.Cursor
import android.net.Uri
import android.os.AsyncTask
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity


class ExpenseManagerActivity : AppCompatActivity() {
val map: HashMap<String,String> = HashMap()
val regex: Regex = Regex("""((?:Rs.)\s*(\d+,*\d*(?:\.\d{2})?))""")

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_expense_manager)
//
AsyncTask.execute {
// readSMS()
getSmsConversation(this){ conversations ->
conversations?.forEach { conversation ->
// println("Number: ${conversation.number}")
conversation.message.forEach { message ->
var matches = regex.findAll(message.body)
// print((matches!!.value))
matches.forEach {

Log.d(conversation.number,it.value)
}
//println("Message : ${it.body}")
}

}
}
}

}
/*
private fun readSMS() {
val cursor: Cursor? =
contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null)
if (cursor != null) {
if (cursor.moveToFirst()) { // must check the result to prevent exception
do {
var msgData = ""
for (idx in 0 until cursor.columnCount) {
msgData += " " + cursor.getColumnName(idx).toString() + ":" + cursor.getString(idx)
var sender: String = msgData.substring()
map.put()
}
// use msgData
Log.d("MSG",msgData)
} while (cursor.moveToNext())
} else { // empty box, no SMS
Toast.makeText(applicationContext, "No SMS Found!",Toast.LENGTH_SHORT).show()
}
}
}*/

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package tech.risinglight.financebuddy

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.graphics.Typeface
import androidx.core.app.ComponentActivity.ExtraData
import androidx.core.content.ContextCompat.getSystemService
import android.icu.lang.UCharacter.GraphemeClusterBreak.T
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.layout_main.*


class MainActivity : AppCompatActivity() {
Expand All @@ -16,5 +18,9 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
val type = Typeface.createFromAsset(assets, "lobster.ttf")
textView.typeface = type

expenseManagerCV.setOnClickListener {
startActivity( Intent(applicationContext, ExpenseManagerActivity::class.java))
}
}
}
9 changes: 9 additions & 0 deletions app/src/main/res/layout/activity_expense_manager.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?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=".ExpenseManagerActivity">

</androidx.constraintlayout.widget.ConstraintLayout>
6 changes: 3 additions & 3 deletions app/src/main/res/layout/layout_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
app:cardBackgroundColor="@color/colorCard"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:layout_constraintEnd_toStartOf="@+id/card2"
app:layout_constraintEnd_toStartOf="@+id/expenseManagerCV"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2">
Expand Down Expand Up @@ -61,7 +61,7 @@
</androidx.cardview.widget.CardView>

<androidx.cardview.widget.CardView
android:id="@+id/card2"
android:id="@+id/expenseManagerCV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
Expand Down Expand Up @@ -145,7 +145,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/card3"
app:layout_constraintTop_toBottomOf="@+id/card2">
app:layout_constraintTop_toBottomOf="@+id/expenseManagerCV">

<LinearLayout
android:layout_width="wrap_content"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
Expand Down

0 comments on commit 9119f7e

Please sign in to comment.