From b8ada3532eaf7467d499f52d7fbb2ce22799e90f Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 21:12:42 +0700
Subject: [PATCH 1/6] "Menambahkan fitur pembaca notifikasi GoPay Merchant"
---
app/src/main/AndroidManifest.xml | 8 ++++
.../io/mvpstarter/sample/com/MainActivity.kt | 16 +++++++
.../sample/com/NotificationReaderService.kt | 48 +++++++++++++++++++
3 files changed, 72 insertions(+)
create mode 100644 app/src/main/java/io/mvpstarter/sample/com/MainActivity.kt
create mode 100644 app/src/main/java/io/mvpstarter/sample/com/NotificationReaderService.kt
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a679514..b962b84 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -47,6 +47,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/io/mvpstarter/sample/com/MainActivity.kt b/app/src/main/java/io/mvpstarter/sample/com/MainActivity.kt
new file mode 100644
index 0000000..019333c
--- /dev/null
+++ b/app/src/main/java/io/mvpstarter/sample/com/MainActivity.kt
@@ -0,0 +1,16 @@
+package io.mvpstarter.sample.com
+
+import android.content.Intent
+import android.os.Bundle
+import android.provider.Settings
+import androidx.appcompat.app.AppCompatActivity
+
+class MainActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ // Perintah untuk langsung membuka halaman pengaturan izin notifikasi di HP
+ val intent = Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS)
+ startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/mvpstarter/sample/com/NotificationReaderService.kt b/app/src/main/java/io/mvpstarter/sample/com/NotificationReaderService.kt
new file mode 100644
index 0000000..ee13759
--- /dev/null
+++ b/app/src/main/java/io/mvpstarter/sample/com/NotificationReaderService.kt
@@ -0,0 +1,48 @@
+package io.mvpstarter.sample.com
+
+import android.speech.tts.TextToSpeech
+import android.service.notification.NotificationListenerService
+import android.service.notification.StatusBarNotification
+import java.util.*
+
+class NotificationReaderService : NotificationListenerService(), TextToSpeech.OnInitListener {
+
+ private var tts: TextToSpeech? = null
+
+ override fun onCreate() {
+ super.onCreate()
+ tts = TextToSpeech(this, this)
+ }
+
+ override fun onInit(status: Int) {
+ if (status == TextToSpeech.SUCCESS) {
+ tts?.language = Locale("id", "ID")
+ }
+ }
+
+ override fun onNotificationPosted(sbn: StatusBarNotification) {
+ val packageName = sbn.packageName.lowercase()
+ val extras = sbn.notification.extras
+
+ // Mengambil judul dan teks notifikasi dengan aman
+ val title = extras.getString("android.title") ?: ""
+ val text = extras.getCharSequence("android.text")?.toString() ?: ""
+
+ // Mengecek apakah notifikasi berasal dari GoBiz, GoPay, atau mengandung kata Gopay
+ val isGoPayMerchant = packageName.contains("gojek.merchant") ||
+ packageName.contains("gobiz") ||
+ packageName.contains("gopay") ||
+ title.lowercase().contains("gopay")
+
+ if (isGoPayMerchant && text.isNotEmpty()) {
+ // Format suara yang dibacakan
+ val pesanSuara = "Ada pembayaran masuk. $text"
+ tts?.speak(pesanSuara, TextToSpeech.QUEUE_ADD, null, null)
+ }
+ }
+
+ override fun onDestroy() {
+ tts?.shutdown()
+ super.onDestroy()
+ }
+}
\ No newline at end of file
From 52f9b933d7ff662e50439ed8fbefe45e40713796 Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 21:34:20 +0700
Subject: [PATCH 2/6] Create main.yml
---
.github/workflows/main.yml | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 .github/workflows/main.yml
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..1eca244
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,32 @@
+name: Build Android APK
+
+on:
+ push:
+ branches: [ "develop", "main", "master" ]
+ workflow_dispatch: # Tombol ajaib agar kamu bisa merakit APK secara manual kapan saja
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Mengambil kode dari repository
+ uses: actions/checkout@v4
+
+ - name: Menyiapkan Java (JDK 11)
+ uses: actions/setup-java@v4
+ with:
+ java-version: '11'
+ distribution: 'temurin'
+
+ - name: Memberikan izin akses untuk Gradle
+ run: chmod +x gradlew
+
+ - name: Merakit (Build) Aplikasi menjadi APK
+ run: ./gradlew assembleDebug
+
+ - name: Menyimpan hasil APK agar bisa di-download
+ uses: actions/upload-artifact@v4
+ with:
+ name: Aplikasi-Notifikasi-Ku
+ path: app/build/outputs/apk/debug/*.apk
From 0a7332f607ac0252a13e6320acbde6f72a5d5478 Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 21:44:18 +0700
Subject: [PATCH 3/6] Update build.gradle
---
build.gradle | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index f95c658..ef039dd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,14 +25,15 @@ allprojects {
}
repositories {
+ gradlePluginPortal()
google()
- jcenter()
+
mavenCentral()
maven { url "https://jitpack.io" }
- maven { url 'https://maven.fabric.io/public' }
+
}
}
task clean(type: Delete) {
delete rootProject.buildDir
-}
\ No newline at end of file
+}
From 01c77ef7121ad727e87848a3ccbdeeff3c58445d Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 21:52:17 +0700
Subject: [PATCH 4/6] Update build.gradle
---
build.gradle | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/build.gradle b/build.gradle
index ef039dd..efb1684 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,15 +2,16 @@ buildscript {
ext.kotlin_version = '1.3.41'
repositories {
google()
- jcenter()
mavenCentral()
- maven { url 'https://maven.fabric.io/public' }
+ gradlePluginPortal() // 👉 Ini yang baru ditambahin buat ben-manes plugin
+
+ // jcenter() dan maven fabric udah dihapus dari sini karena servernya mati
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//noinspection GradleDynamicVersion
- classpath 'io.fabric.tools:gradle:1.+'
+ classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.google.gms:google-services:4.3.0'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.22.0'
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
@@ -27,10 +28,8 @@ allprojects {
repositories {
gradlePluginPortal()
google()
-
mavenCentral()
maven { url "https://jitpack.io" }
-
}
}
From 9f56e38057afaaf81198c652aba3d461a9750cfb Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 21:57:13 +0700
Subject: [PATCH 5/6] Update build.gradle
---
build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build.gradle b/build.gradle
index efb1684..2e9ab25 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,7 +11,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//noinspection GradleDynamicVersion
- classpath 'io.fabric.tools:gradle:1.+'
+ //classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.google.gms:google-services:4.3.0'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.22.0'
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
From 98ac95c0fbee704eed952b7ed7ae2e0c261f0fb3 Mon Sep 17 00:00:00 2001
From: bachtiarzs <125351037+bachtiarzs@users.noreply.github.com>
Date: Tue, 31 Mar 2026 22:01:23 +0700
Subject: [PATCH 6/6] Update dependencies.gradle
---
app/dependencies.gradle | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/dependencies.gradle b/app/dependencies.gradle
index 7f93e12..f2f34da 100644
--- a/app/dependencies.gradle
+++ b/app/dependencies.gradle
@@ -78,7 +78,7 @@ ext {
googlePlay = [
maps : "com.google.android.gms:play-services-maps:16.0.0",
- crash : "com.google.firebase:firebase-crash:16.2.1",
+ // crash : "com.google.firebase:firebase-crash:16.2.1",
firebaseCore : "com.google.firebase:firebase-core:$versions.firebase",
firebaseMessaging: "com.google.firebase:firebase-messaging:17.3.4"
]
@@ -148,4 +148,4 @@ ext {
unitTestLibs = unitTest.values() + leakCannary
androidTestsLibs = androidTests.values() + supportLibs
-}
\ No newline at end of file
+}