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 +}