├── android-studio-project ├── settings.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── SMS-Forwarding │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── drawable │ │ │ │ │ ├── launcher.png │ │ │ │ │ └── menu_add.png │ │ │ │ ├── drawable-hdpi │ │ │ │ │ └── menu_add.png │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ └── menu_add.png │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ └── menu_add.png │ │ │ │ ├── drawable-xxxhdpi │ │ │ │ │ └── menu_add.png │ │ │ │ ├── values │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── themes.xml │ │ │ │ │ └── strings.xml │ │ │ │ ├── menu │ │ │ │ │ └── activity_recipient_list.xml │ │ │ │ └── layout │ │ │ │ │ ├── activity_recipient_list.xml │ │ │ │ │ └── dialog_recipient_listitem.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── github │ │ │ │ │ └── warren_bank │ │ │ │ │ └── sms_automatic_forwarding │ │ │ │ │ ├── event │ │ │ │ │ ├── SMSSender.java │ │ │ │ │ └── SMSReceiver.java │ │ │ │ │ ├── security_model │ │ │ │ │ └── RuntimePermissions.java │ │ │ │ │ ├── data_model │ │ │ │ │ ├── Preferences.java │ │ │ │ │ └── RecipientListItem.java │ │ │ │ │ └── ui │ │ │ │ │ └── RecipientListActivity.java │ │ │ └── AndroidManifest.xml │ │ ├── withContactName │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── github │ │ │ │ └── warren_bank │ │ │ │ └── sms_automatic_forwarding │ │ │ │ ├── security_model │ │ │ │ └── OptionalRuntimePermissions.java │ │ │ │ └── data_model │ │ │ │ └── Contacts.java │ │ ├── noContactName │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── github │ │ │ │ └── warren_bank │ │ │ │ └── sms_automatic_forwarding │ │ │ │ ├── security_model │ │ │ │ └── OptionalRuntimePermissions.java │ │ │ │ └── data_model │ │ │ │ └── Contacts.java │ │ └── withAllLanguageTranslations │ │ │ └── res │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-az │ │ │ └── strings.xml │ │ │ ├── values-he │ │ │ └── strings.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-sq │ │ │ └── strings.xml │ │ │ ├── values-fa │ │ │ └── strings.xml │ │ │ ├── values-bn │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-hi │ │ │ └── strings.xml │ │ │ ├── values-ur │ │ │ └── strings.xml │ │ │ ├── values-fi │ │ │ └── strings.xml │ │ │ ├── values-sv │ │ │ └── strings.xml │ │ │ ├── values-th │ │ │ └── strings.xml │ │ │ ├── values-et │ │ │ └── strings.xml │ │ │ ├── values-gl │ │ │ └── strings.xml │ │ │ ├── values-nb │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-sk │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-eo │ │ │ └── strings.xml │ │ │ ├── values-da │ │ │ └── strings.xml │ │ │ ├── values-lv │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ └── strings.xml │ │ │ ├── values-id │ │ │ └── strings.xml │ │ │ ├── values-eu │ │ │ └── strings.xml │ │ │ ├── values-lt │ │ │ └── strings.xml │ │ │ ├── values-nl │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-sl │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-pb │ │ │ └── strings.xml │ │ │ ├── values-ro │ │ │ └── strings.xml │ │ │ ├── values-uk │ │ │ └── strings.xml │ │ │ ├── values-ky │ │ │ └── strings.xml │ │ │ ├── values-ms │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-bg │ │ │ └── strings.xml │ │ │ ├── values-el │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-tl │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-ca │ │ │ └── strings.xml │ │ │ └── values-ga │ │ │ └── strings.xml │ ├── proguard-rules.txt │ └── build.gradle ├── constants.gradle ├── gradle.properties ├── build.gradle ├── gradlew.bat └── gradlew ├── screenshots ├── 2-prefs-add-new-entry-dialog.png ├── 3-prefs-one-entry-in-whitelist.png └── 1-prefs-no-entries-in-whitelist.png ├── .gitignore ├── package.json ├── README.md └── LICENSE.txt /android-studio-project/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':SMS-Forwarding' 2 | -------------------------------------------------------------------------------- /screenshots/2-prefs-add-new-entry-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/screenshots/2-prefs-add-new-entry-dialog.png -------------------------------------------------------------------------------- /screenshots/3-prefs-one-entry-in-whitelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/screenshots/3-prefs-one-entry-in-whitelist.png -------------------------------------------------------------------------------- /screenshots/1-prefs-no-entries-in-whitelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/screenshots/1-prefs-no-entries-in-whitelist.png -------------------------------------------------------------------------------- /android-studio-project/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable/launcher.png -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable/menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable/menu_add.png -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable-hdpi/menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable-hdpi/menu_add.png -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable-xhdpi/menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable-xhdpi/menu_add.png -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable-xxhdpi/menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable-xxhdpi/menu_add.png -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/drawable-xxxhdpi/menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/warren-bank/Android-SMS-Automatic-Forwarding/HEAD/android-studio-project/SMS-Forwarding/src/main/res/drawable-xxxhdpi/menu_add.png -------------------------------------------------------------------------------- /android-studio-project/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withContactName/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js dev-dependencies 2 | node_modules/ 3 | 4 | # Android generated 5 | bin 6 | gen 7 | obj 8 | lint.xml 9 | 10 | # IntelliJ IDEA 11 | .idea 12 | *.iml 13 | *.ipr 14 | *.iws 15 | classes 16 | gen-external-apklibs 17 | 18 | # Gradle 19 | .gradle 20 | build 21 | buildout 22 | out 23 | 24 | # Other 25 | .DS_Store 26 | local.properties 27 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #999999 5 | 6 | #999999 7 | #FFFFFF 8 | 9 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/menu/activity_recipient_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/noContactName/java/com/github/warren_bank/sms_automatic_forwarding/security_model/OptionalRuntimePermissions.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.security_model; 2 | 3 | import android.app.Activity; 4 | 5 | public final class OptionalRuntimePermissions { 6 | public static void requestPermissions(Activity activity) {} 7 | } 8 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/noContactName/java/com/github/warren_bank/sms_automatic_forwarding/data_model/Contacts.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.data_model; 2 | 3 | import android.content.Context; 4 | 5 | public final class Contacts { 6 | public static String getContactName(Context context, String phoneNumber) { 7 | return null; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /android-studio-project/constants.gradle: -------------------------------------------------------------------------------- 1 | project.ext { 2 | applicationId = 'com.github.warren_bank.sms_automatic_forwarding' 3 | releaseVersionCode = Integer.parseInt("002030111", 10) //Integer.MAX_VALUE == 2147483647 4 | releaseVersion = '002.03.01-11API' 5 | javaVersion = JavaVersion.VERSION_1_8 6 | minSdkVersion = 11 7 | targetSdkVersion = 35 8 | compileSdkVersion = 35 9 | buildToolsVersion = '34.0.0' 10 | } 11 | -------------------------------------------------------------------------------- /android-studio-project/gradle.properties: -------------------------------------------------------------------------------- 1 | android.nonFinalResIds=false 2 | 3 | # ---------------------------------------------------------- 4 | # increase RAM allocation in 2x places: 5 | # 6 | # 1) in file: 7 | # C:\Android\android-studio\bin\studio64.exe.vmoptions 8 | # by changing value from: 9 | # -Xmx768m 10 | # to: 11 | # -Xmx2048m 12 | # 13 | # 2) here: 14 | org.gradle.jvmargs=-Xmx2048M 15 | # ---------------------------------------------------------- 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@warren-bank/Android-SMS-Automatic-Forwarding", 3 | "private": true, 4 | "license": "GPL-2.0", 5 | "devDependencies": { 6 | "@warren-bank/translate-android-strings": "^2.0.0" 7 | }, 8 | "scripts": { 9 | "translate": "translate-android-strings -i \"en\" -f \"android-studio-project/SMS-Forwarding/src/main/res/values/strings.xml\" -d \"android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res\" -m --na --nc --nw -b \"SMS\"", 10 | "translate:debug": "npm run translate -- -o \"en\" --debug" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS 转发中 4 | 開啟服務 5 | 转发接收者: 6 | 發件人必須以: 7 | 反恐 8 | 迪勒特 9 | 拯救 10 | ADD 11 | 錯誤: 缺少必要值 12 | 錯誤: 無法新增項目到清單 13 | 從: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS 转发 4 | 启用服务 5 | 转发收件人: 6 | 发件人必须结束于: 7 | 比利时 8 | 迪莱特 9 | 拯救 10 | 异常值 11 | 错误: 缺少必需值 12 | 错误: 无法将新项目添加到列表 13 | 转自: 14 | -------------------------------------------------------------------------------- /android-studio-project/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:8.7.2' // https://mvnrepository.com/artifact/com.android.tools.build/gradle?repo=google 8 | // https://developer.android.com/build/releases/gradle-plugin#updating-gradle 9 | // https://developer.android.com/build/releases/gradle-plugin#api-level-support 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | } 19 | 20 | task clean(type: Delete) { 21 | delete rootProject.buildDir 22 | } 23 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS 회사연혁 4 | 회사 소개 5 | 고객 지원: 6 | Sender는 끝이어야 합니다: 7 | CANCEL 소개 8 | 계정 만들기 9 | 제품 정보 10 | 사이트맵 11 | 오류: 필수 값 12 | 오류 : 목록에 새 항목을 추가 할 수 없습니다 13 | 거래 시작: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS フォワーディング 4 | サービスを有効にする 5 | 転送受信者: 6 | Sender は終了しなければなりません: 7 | ログイン 8 | ディレテ 9 | スエイブ 10 | 追加情報 11 | エラー: 必須値の欠如 12 | エラー:リストに新しい項目を追加できません 13 | から転送: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-az/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Uşaq 4 | Xidmət 5 | Uşaq alıcı: 6 | E-poçt ünvanı: 7 | C 8 | E-POÇT 9 | SAVE 10 | E-POÇT 11 | Yadda saxla 12 | Fayl: siyahısı yeni maddə əlavə etməyə bilər 13 | Daxil ol: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-he/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS קדימה 4 | שירות אמין 5 | קידום נמען: 6 | שלח חייב להסתיים עם: 7 | הזדמנות 8 | DELETE 9 | SAVE 10 | ADD 11 | טעות: חסר ערך 12 | טעות: לא ניתן להוסיף פריט חדש לרשימה 13 | קדימה: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS المستقبل 4 | الخدمة التمكينية 5 | المتلقي المباشر: 6 | يجب أن ينتهي الجنس: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | خسارة القيمة المطلوبة 12 | لا يمكن إضافة بند جديد للقائمة 13 | مقدم من: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-sq/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Vazhdo 4 | Aktivo shërbimin 5 | Vazhdo: 6 | Dërguesi me: 7 | KANCEL 8 | DELTË 9 | SAVE 10 | ADD 11 | Gabim: Mungon vlera 12 | Gabim: I pamundur shtimi i elementit të ri në listë 13 | Vazhdo: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS پیشبرد 4 | خدمات 5 | بازگشت گیرنده: 6 | ارسال کننده باید با: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | خطای: از دست رفته ارزش 12 | خطا: نمی تواند آیتم جدید را به لیست اضافه کند 13 | برگرفته از:: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS কল অনুবর্তন 4 | সার্ভিস সক্রিয় করো 5 | প্রাপক: 6 | প্রেরকের শেষে হওয়া আবশ্যক: 7 | ক্লীব 8 | লাভা 9 | সেভ 10 | ADD 11 | ত্রুটি: ভুল মান 12 | ত্রুটি: নতুন তালিকা যোগ করতে ব্যর্থ 13 | ফরওয়ার্ড করা হয়েছে: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Forwarding 4 | Enable Servis 5 | Forwarding alıcı: 6 | Sender ile bitmelidir: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Hata: Eksik Gerekli Değer 12 | Hata: Listeye yeni öğe ekleyebilir 13 | İleriden: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS फॉरवर्डिंग 4 | सेवा 5 | फॉरवर्डिंग प्राप्तकर्ता: 6 | प्रेषक के साथ समाप्त होना चाहिए: 7 | CANCEL 8 | दिल्ली 9 | सेव 10 | ADD 11 | त्रुटि: मिसिंग आवश्यक मान 12 | त्रुटि: सूची में नया आइटम नहीं मिला 13 | अग्रेषित: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ur/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS ترقی 4 | سروس فعال کریں 5 | نجات پانے کیلئے: 6 | نئے سرے سے ختم ہونا ضروری ہے: 7 | رنگ 8 | آسٹریلیا 9 | یونان 10 | داؤد 11 | غلطی: مفقود درکار 12 | خامی: فہرست میں نئی آئٹم شامل نہیں کیا جاسکتا 13 | انعام کے لیے: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Lähetys 4 | Käytä palvelua 5 | Vastaanottaja: 6 | Lähettäjän on päätyttävä: 7 | CANCEL 8 | POISTA 9 | SAVE 10 | ADD 11 | Virhe: puuttuva vaadittu arvo 12 | Virhe: Uutta kohdetta ei voitu lisätä luetteloon 13 | Eteenpäin: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Framåt 4 | Aktivera service 5 | Framåt mottagare: 6 | Sender måste sluta med: 7 | CANCEL 8 | DELETE 9 | SPARA 10 | ADD 11 | Fel: Missing krävs värde 12 | Fel: Kunde inte lägga till nytt objekt i listan 13 | Framåt från: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS ส่งต่อ 4 | เปิดใช้งานบริการ 5 | กําลังส่งต่อผู้รับ: 6 | ผู้ส่งต้องสิ้นสุดด้วย: 7 | ซิงเกิล 8 | เดเลต 9 | ป้องกัน 10 | ADD 11 | ผิดพลาด: ค่าที่ไม่ต้องการ 12 | ผิดพลาด: ไม่สามารถเพิ่มรายการใหม่ไปยังรายการได้ 13 | ส่งต่อจาก: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Forwarding 4 | 5 | Enable Service 6 | Forwarding recipient: 7 | Sender must end with: 8 | CANCEL 9 | DELETE 10 | SAVE 11 | 12 | ADD 13 | 14 | Error: Missing Required Value 15 | Error: Could not add new item to list 16 | 17 | Forwarded from: 18 | 19 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Edastamine 4 | Teenuse lubamine 5 | Saaja edastamine: 6 | Saatja peab lõpetama: 7 | TÜHISTADA 8 | DELETE 9 | PÄÄSTA 10 | LISA 11 | Viga: puudub nõutav väärtus 12 | Viga: uue elemendi lisamine nimekirja nurjus 13 | Edastatud: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Adiante 4 | Servicioable 5 | Reenviar destinatarios: 6 | Sender debe rematar con: 7 | ANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Erro: falta de valor 12 | Erro: Non se pode engadir un novo elemento á lista 13 | Enviado desde: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Forwarding 4 | Aktiver tjeneste 5 | Sender mottaker: 6 | Sender må slutte med: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Feil: mangler nødvendig verdi 12 | Feil: Kunne ikke legge til nytt element i listen 13 | Forward fra: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Przekazywanie 4 | Włącz usługę 5 | Przekazywanie odbiorcy: 6 | Nadawca musi zakończyć: 7 | CANCEL 8 | DELETA 9 | SAVE 10 | ADD 11 | Błąd: brak wymaganej wartości 12 | Błąd: Nie można dodać nowego elementu do listy 13 | Przekazane: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-sk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Zasielanie 4 | Povoliť službu 5 | Zasielateľ: 6 | Odosielateľ musí skončiť: 7 | KANÁL 8 | DELTE 9 | SAVE 10 | ADD 11 | Chyba: Chýbajúca požadovaná hodnota 12 | Chyba: Nepodarilo sa pridať novú položku do zoznamu 13 | Zaslané z: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Předání 4 | Povolit službu 5 | Předání příjemce: 6 | Odesílatel musí skončit: 7 | KANCEL 8 | DELET 9 | BEZPEČNOST 10 | ADD 11 | Chyba: Chybějící požadovaná hodnota 12 | Chyba: Nelze přidat novou položku do seznamu 13 | Vypuštěno od: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Weiterleitung 4 | Service aktivieren 5 | Empfänger weitergeben: 6 | Absender muss enden: 7 | CANCEL 8 | DELE 9 | SAVE 10 | ADD 11 | Fehler: Fehlen erforderlicher Wert 12 | Fehler: Konnte keine neue Liste hinzufügen 13 | Vorwärts von: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-eo/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Antaŭite 4 | Enebla servo 5 | Antaŭite fare de ricevanto: 6 | Sendanto devas finiĝi kun: 7 | CANCEL 8 | DELIKTO 9 | SA 10 | ADD 11 | Eraro: Missing Required Value 12 | Eraro: ne povas aldoni novan objekton al listo 13 | Antaŭite de: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Fremsendelse 4 | Aktivér tjeneste 5 | Fremsendelse af modtager: 6 | Afsenderen skal slutte med: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Fejl: Manglende krævet værdi 12 | Fejl: Kunne ikke tilføje nyt punkt til listen 13 | Fremsendt fra: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-lv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Pārsūtīšana 4 | Ieslēgt servisu 5 | Saņēmēja pārsūtīšana: 6 | Sūtītājam jābeidzas ar: 7 | CANEL 8 | DELETE 9 | SAVE 10 | PIEVIENOT 11 | Kļūda: Trūkst vajadzīgās vērtības 12 | Kļūda: Nevar pievienot jaunu ierakstu sarakstam 13 | Pārsūtīts no: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Továbbítás 4 | Szolgáltatás engedélyezése 5 | A kedvezményezett továbbítása: 6 | A feladónak: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Hiba: hiányzó szükséges érték 12 | Hiba: nem sikerült új elemet felvenni a listába 13 | Származási hely: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-id/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Meneruskan 4 | Aktifkan Layanan 5 | Penerima Penerusan: 6 | Pengirim harus diakhiri dengan: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Galat: Nilai yang Diperlukan Hilang 12 | Galat: Tak bisa menambah butir baru ke daftar 13 | Dicegah dari: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-eu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Aurreratzea 4 | Gaitu zerbitzua 5 | Birbidalitako hartzailea: 6 | Bidaltzaileak amaitu behar du: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Errorea: beharrezko balioa falta da 12 | Errorea: ezin izan da elementu berria gehitu zerrendan 13 | Aurrera: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Perdavimas 4 | Įjungti paslaugą 5 | Siunčiamas gavėjas: 6 | Siuntėjas turi baigti: 7 | CANCEL 8 | CONSTELLATION NAME (OPTIONAL) 9 | SAVE 10 | ADD 11 | Klaida: trūksta reikalaujamos vertės 12 | Klaida: į sąrašą nepavyko įtraukti naujo elemento 13 | Iš: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Doorsturen 4 | Dienst inschakelen 5 | Doorsturende ontvanger: 6 | Afzender moet eindigen met: 7 | ANNULEREN 8 | DELETE 9 | SAVE 10 | ADD 11 | Fout: ontbrekende vereiste waarde 12 | Fout: kon geen nieuw item aan lijst toevoegen 13 | Doorgestuurd van: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Вперед 4 | Включить сервис 5 | Направляющий получатель: 6 | Отправитель должен закончить: 7 | КАНЦЕЛЯРИЯ 8 | УДАЛИТЬ 9 | СПАСАТЬ 10 | СДВГ 11 | Ошибка: недостающая ценность 12 | Ошибка: нельзя добавлять новый элемент в список 13 | Перенесенный из: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-sl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Posredovanje 4 | Omogoči storitev 5 | Pošiljanje prejemnika: 6 | Pošiljatelj mora končati s: 7 | CANCEL 8 | DELETE 9 | REŠEVANJE 10 | ADD 11 | Napaka: manjka zahtevana vrednost 12 | Napaka: Ni moč dodati novega predmeta na seznam 13 | Posredovano iz: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Adelante 4 | Servicio de habilitación 5 | Recibido ascendente: 6 | El remitente debe terminar con: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Error: falta de valor requerido 12 | Error: No se puede añadir nuevo elemento a la lista 13 | Avanzado desde: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-pb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Encaminhando 4 | Activar o Serviço 5 | Encaminhando destinatário: 6 | O remetente deve terminar com: 7 | CANCEL 8 | DELETE 9 | SAVE 10 | ADD 11 | Erro: Falta o valor necessário 12 | Erro: Não foi possível adicionar novo item à lista 13 | Encaminhado de: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Se transmite 4 | Activează serviciul 5 | Destinatar de expediere: 6 | Sender trebuie să se termine cu: 7 | CANCEL 8 | DELETE 9 | SALVARE 10 | ADD 11 | Eroare: Lipsește valoarea necesară 12 | Eroare: Nu s-a putut adăuga un nou element în listă 13 | De la: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Переадресація 4 | Увімкнути послугу 5 | Переадресація одержувача: 6 | Відправник повинен закінчитися: 7 | КАНСЛ 8 | ДЕЛЕТЕК 9 | САВИ 10 | АДД 11 | Помилка: Обов\'язкове значення 12 | Помилка: Не можна додати новий елемент до списку 13 | Переадресований з: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withContactName/java/com/github/warren_bank/sms_automatic_forwarding/security_model/OptionalRuntimePermissions.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.security_model; 2 | 3 | import android.app.Activity; 4 | import android.os.Build; 5 | 6 | public final class OptionalRuntimePermissions { 7 | private static final int REQUEST_CODE = 1; 8 | 9 | public static void requestPermissions(Activity activity) { 10 | if (Build.VERSION.SDK_INT < 23) 11 | return; 12 | 13 | final String[] permissions_all = new String[]{ "android.permission.READ_CONTACTS" }; 14 | final String[] permissions_req = RuntimePermissions.getMissingPermissions(activity, permissions_all); 15 | 16 | if (permissions_req == null) 17 | return; 18 | 19 | activity.requestPermissions(permissions_req, REQUEST_CODE); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ky/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Алдыга жылдыруу 4 | Кызмат көрсөтүү 5 | Алуучуну жөнөтүү: 6 | Сунуш берүүчү менен аяктоо керек: 7 | КАНЦЛЕР 8 | АЧЫК-АЙКЫН 9 | SAVE 10 | КОШУМЧА КОШУМЧА 11 | Ката: Керектүү баалуулуктун жоктугу 12 | Ката: Тизмеге жаңы пунктту кошууга болбойт 13 | Алдыга карай: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Pemajuan 4 | Memungkinkan Layanan 5 | Penerima Pemajuan Yesus: 6 | Pengirim harus diakhiri dengan: 7 | CANCEL HARUS 8 | ADUHAI 9 | SAVE 10 | ADD SDD 11 | Galat: Nilai Diperlukan Hilang 12 | Ralat: Tak dapat menambah item baru ke daftar 13 | Diteruskan dari: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Encaminhamento 4 | Habilitar o Serviço 5 | Encaminhamento do destinatário: 6 | O remetente deve terminar com: 7 | CANCELAMENTO 8 | DELETE 9 | SAVE 10 | ADD 11 | Erro: Falta de valor exigido 12 | Erro: Não poderia adicionar novo item à lista 13 | Forwarded de: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Прехвърляне 4 | Включване на услугата 5 | Предаващ получател: 6 | Подателят трябва да завърши с: 7 | CANCEL 8 | ПОЛУЧЕТЕ 9 | SAVE 10 | ADD 11 | Грешка: Липсваща задължителна стойност 12 | Грешка: Грешка при добавяне на нов елемент към списъка 13 | Препратени от: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Προώθηση 4 | Ενεργοποίηση υπηρεσίας 5 | Παραλήπτης προώθησης: 6 | Ο αποστολέας πρέπει να τελειώσει με: 7 | ΑΚΥΡΩΣΗ 8 | ΔΕΛΕΤΗ 9 | ΣΩΛΗΝΑ 10 | ADD 11 | Σφάλμα: Λείπει η απαιτούμενη τιμή 12 | Σφάλμα: Αδυναμία προσθήκης νέου αντικειμένου στη λίστα 13 | Προωθημένο από: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Inoltro 4 | Servizio abilitato 5 | Inoltro del destinatario: 6 | Sender deve finire con: 7 | CANCELLAZIONE 8 | DELETE 9 | SAVE 10 | ADDETTI 11 | Errore: Valore richiesto mancante 12 | Errore: Non potrebbe aggiungere nuovo elemento all\'elenco 13 | Trasferito da: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-tl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Pagsulong 4 | Kaaya - ayang Paglilingkod 5 | Pagsulong sa tumanggap: 6 | Dapat magwakas ang nagpadala: 7 | SELERO 8 | DELETE 9 | KALIGAYAHAN 10 | ADD 11 | Error: Kulang sa Kailangang Halaga 12 | Error: hindi makapagdagdag ng bagong bagay sa listahan 13 | Mula sa unahan: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Transmission 4 | Activer le service 5 | Récipiendaire de transmission: 6 | L\'expéditeur doit terminer avec: 7 | ANNULATION 8 | DELETE 9 | SAUVER 10 | ADD 11 | Erreur : Valeur requise manquante 12 | Erreur : Impossible d\'ajouter un nouvel élément à la liste 13 | Transmis depuis: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Reenviament 4 | Habilita el servei 5 | S\' està reenviar el destinatari: 6 | El remitent ha d\' acabar amb: 7 | CLLACONSTELLATION NAME (OPTIONAL) 8 | DEVE 9 | SALVAR 10 | ADD 11 | Error: Falta valor requerit 12 | Error: no s\' ha pogut afegir un element nou a la llista 13 | Reenviat des de: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withAllLanguageTranslations/res/values-ga/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SMS Forwarding 4 | Seirbhís Cumasaithe 5 | Faighteoir ar aghaidh: 6 | Ní mór do Cender deireadh a chur leis: 7 | IRL - LIBRARY SERVICE 8 | ROLETE 9 | CAITHEAMH AIMSIRE 10 | ADD 11 | Earráid: Missing Luach Riachtanach 12 | Earráid: Níorbh fhéidir mír nua a chur leis an liosta 13 | Ar aghaidh ó: 14 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/layout/activity_recipient_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 16 | 17 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/withContactName/java/com/github/warren_bank/sms_automatic_forwarding/data_model/Contacts.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.data_model; 2 | 3 | import android.content.Context; 4 | import android.database.Cursor; 5 | import android.net.Uri; 6 | import android.provider.ContactsContract; 7 | 8 | public final class Contacts { 9 | public static String getContactName(Context context, String phoneNumber) { 10 | String contactName = null; 11 | 12 | try { 13 | Uri uri = Uri.withAppendedPath( 14 | ContactsContract.PhoneLookup.CONTENT_FILTER_URI, 15 | Uri.encode(phoneNumber) 16 | ); 17 | String[] projection = new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}; 18 | Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null); 19 | 20 | if (cursor != null) { 21 | if(cursor.moveToFirst()) { 22 | contactName = cursor.getString(0); 23 | } 24 | cursor.close(); 25 | } 26 | } 27 | catch(Exception e) {} 28 | 29 | return contactName; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/java/com/github/warren_bank/sms_automatic_forwarding/event/SMSSender.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.event; 2 | 3 | import com.github.warren_bank.sms_automatic_forwarding.R; 4 | 5 | import android.content.Context; 6 | import android.telephony.SmsManager; 7 | import java.util.ArrayList; 8 | 9 | public final class SMSSender { 10 | 11 | public static void forward(Context context, ArrayList recipients, String sender, String sender_contact_name, String body) { 12 | SmsManager sms = SmsManager.getDefault(); 13 | String recipient; 14 | 15 | String preface = context.getString(R.string.sms_preface_heading); 16 | if ((sender_contact_name != null) && !sender_contact_name.isEmpty()) { 17 | preface += "\n " + sender_contact_name; 18 | } 19 | preface += "\n " + sender; 20 | 21 | ArrayList parts = sms.divideMessage(preface + "\n\n" + body); 22 | 23 | for (int i=0; i < recipients.size(); i++) { 24 | try { 25 | recipient = recipients.get(i); 26 | sms.sendMultipartTextMessage(recipient, null, parts, null, null); 27 | } 28 | catch(Exception e) { continue; } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/proguard-rules.txt: -------------------------------------------------------------------------------- 1 | ##---------- Begin: proguard configuration for Gson ---------- 2 | # https://github.com/google/gson/blob/main/examples/android-proguard-example/proguard.cfg 3 | 4 | # Gson uses generic type information stored in a class file when working with fields. 5 | # Proguard removes such information by default, so configure it to keep all of it. 6 | -keepattributes Signature 7 | 8 | # For using GSON @Expose annotation 9 | -keepattributes *Annotation* 10 | 11 | # Gson specific classes 12 | -dontwarn sun.misc.** 13 | #-keep class com.google.gson.stream.** { *; } 14 | 15 | # Application classes that will be serialized/deserialized over Gson 16 | -keep class com.github.warren_bank.sms_automatic_forwarding.data_model.RecipientListItem { ; } 17 | 18 | # Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory, 19 | # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) 20 | -keep class * extends com.google.gson.TypeAdapter 21 | -keep class * implements com.google.gson.TypeAdapterFactory 22 | -keep class * implements com.google.gson.JsonSerializer 23 | -keep class * implements com.google.gson.JsonDeserializer 24 | 25 | # Prevent R8 from leaving Data object members always null 26 | -keepclassmembers,allowobfuscation class * { 27 | @com.google.gson.annotations.SerializedName ; 28 | } 29 | 30 | # Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher. 31 | -keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken 32 | -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken 33 | 34 | ##---------- End: proguard configuration for Gson ---------- 35 | 36 | -keeppackagenames com.github.warren_bank.sms_automatic_forwarding.** 37 | 38 | -keep class com.github.warren_bank.sms_automatic_forwarding.** { *; } 39 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/java/com/github/warren_bank/sms_automatic_forwarding/security_model/RuntimePermissions.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.security_model; 2 | 3 | import android.app.Activity; 4 | import android.content.pm.PackageManager; 5 | import android.os.Build; 6 | import java.util.ArrayList; 7 | 8 | public final class RuntimePermissions { 9 | private static final int REQUEST_CODE = 0; 10 | 11 | protected static String[] getMissingPermissions(Activity activity, String[] permissions_all) { 12 | ArrayList permissions_req = new ArrayList(); 13 | 14 | for (String permission_name : permissions_all) { 15 | if (activity.checkSelfPermission(permission_name) != PackageManager.PERMISSION_GRANTED) { 16 | permissions_req.add(permission_name); 17 | } 18 | } 19 | 20 | return permissions_req.isEmpty() 21 | ? null 22 | : permissions_req.toArray(new String[0]); 23 | } 24 | 25 | public static boolean isEnabled(Activity activity) { 26 | if (Build.VERSION.SDK_INT < 23) 27 | return true; 28 | 29 | final String[] permissions_all = new String[]{ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" }; 30 | final String[] permissions_req = RuntimePermissions.getMissingPermissions(activity, permissions_all); 31 | 32 | if (permissions_req == null) 33 | return true; 34 | 35 | activity.requestPermissions(permissions_req, REQUEST_CODE); 36 | return false; 37 | } 38 | 39 | public static void onRequestPermissionsResult (Activity activity, int requestCode, String[] permissions, int[] grantResults) { 40 | if (requestCode != REQUEST_CODE) 41 | return; 42 | 43 | if (grantResults.length == 0) 44 | return; 45 | 46 | for (int result : grantResults) { 47 | if (result != PackageManager.PERMISSION_GRANTED) return; 48 | } 49 | 50 | activity.recreate(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/java/com/github/warren_bank/sms_automatic_forwarding/data_model/Preferences.java: -------------------------------------------------------------------------------- 1 | package com.github.warren_bank.sms_automatic_forwarding.data_model; 2 | 3 | import android.content.Context; 4 | import android.content.SharedPreferences; 5 | import java.util.ArrayList; 6 | 7 | public final class Preferences { 8 | private static final String PREFS_FILENAME = "PREFS"; 9 | private static final String PREF_ENABLED = "ENABLED"; 10 | private static final String PREF_LISTITEMS = "LISTITEMS"; 11 | 12 | public static boolean isEnabled(Context context) { 13 | SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE); 14 | return sharedPreferences.getBoolean(PREF_ENABLED, true); 15 | } 16 | 17 | public static void setEnabled(Context context, boolean enabled) { 18 | SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE); 19 | SharedPreferences.Editor prefs_editor = sharedPreferences.edit(); 20 | prefs_editor.putBoolean(PREF_ENABLED, enabled); 21 | prefs_editor.apply(); 22 | } 23 | 24 | public static ArrayList getRecipientListItems(Context context) { 25 | SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE); 26 | String json = sharedPreferences.getString(PREF_LISTITEMS, null); 27 | 28 | return (json == null) 29 | ? new ArrayList() 30 | : RecipientListItem.fromJson(json) 31 | ; 32 | } 33 | 34 | public static void setRecipientListItems(Context context, ArrayList listItems) { 35 | String json = RecipientListItem.toJson(listItems); 36 | 37 | SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE); 38 | SharedPreferences.Editor prefs_editor = sharedPreferences.edit(); 39 | prefs_editor.putString(PREF_LISTITEMS, json); 40 | prefs_editor.apply(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/build.gradle: -------------------------------------------------------------------------------- 1 | apply from: '../constants.gradle' 2 | apply plugin: 'com.android.application' 3 | 4 | android { 5 | namespace project.ext.applicationId 6 | 7 | compileSdkVersion project.ext.compileSdkVersion 8 | buildToolsVersion project.ext.buildToolsVersion 9 | 10 | compileOptions { 11 | sourceCompatibility project.ext.javaVersion 12 | targetCompatibility project.ext.javaVersion 13 | } 14 | 15 | defaultConfig { 16 | minSdkVersion project.ext.minSdkVersion 17 | targetSdkVersion project.ext.targetSdkVersion 18 | 19 | applicationId project.ext.applicationId 20 | versionName project.ext.releaseVersion 21 | versionCode project.ext.releaseVersionCode 22 | 23 | archivesBaseName += "-$versionName" 24 | } 25 | 26 | flavorDimensions "languageResources", "contactName" 27 | 28 | productFlavors { 29 | withAllLanguageTranslations { 30 | dimension "languageResources" 31 | } 32 | english { 33 | dimension "languageResources" 34 | } 35 | withContactName { 36 | dimension "contactName" 37 | } 38 | noContactName { 39 | dimension "contactName" 40 | } 41 | } 42 | 43 | buildTypes { 44 | release { 45 | debuggable false 46 | jniDebuggable false 47 | shrinkResources true 48 | minifyEnabled true 49 | proguardFiles = [ 50 | "proguard-rules.txt", 51 | getDefaultProguardFile('proguard-android.txt') 52 | ] 53 | } 54 | debug { 55 | debuggable true 56 | jniDebuggable true 57 | shrinkResources false 58 | minifyEnabled false 59 | } 60 | } 61 | 62 | dependenciesInfo { 63 | includeInApk = false // Disables dependency metadata when building APKs. 64 | includeInBundle = false // Disables dependency metadata when building Android App Bundles. 65 | } 66 | 67 | lintOptions { 68 | disable 'MissingTranslation' 69 | abortOnError true 70 | } 71 | } 72 | 73 | dependencies { 74 | implementation 'com.google.code.gson:gson:2.8.5' // https://mvnrepository.com/artifact/com.google.code.gson/gson 75 | } 76 | -------------------------------------------------------------------------------- /android-studio-project/SMS-Forwarding/src/main/res/layout/dialog_recipient_listitem.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 17 | 18 | 23 | 24 | 30 | 31 | 37 | 38 | 44 | 45 | 52 | 53 |