Skip to content

Commit

Permalink
Merge pull request #19 from ICTrust/dev
Browse files Browse the repository at this point in the history
Update 1.6.0
  • Loading branch information
A-YATTA authored Nov 13, 2024
2 parents 1da8827 + 1ae50f6 commit 039f847
Show file tree
Hide file tree
Showing 116 changed files with 12,460 additions and 1,697 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ captures/
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/librarie
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
Expand All @@ -52,6 +52,9 @@ captures/

.idea/

# vscode
.vscode/

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
Expand Down Expand Up @@ -93,3 +96,4 @@ app/release/
# ignore .DS_Store
app/.DS_Store
.DS_Store

2 changes: 1 addition & 1 deletion .idea/compiler.xml
100755 → 100644

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions .idea/misc.xml
100755 → 100644

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 30 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,53 @@


# PObY-A
PObY-A, Privacy Owned by You - Android, is an application which aims to help Android users improve the security and privacy of their devices.
PObY-A, Privacy Owned by You - Android, is a security and privacy application for Android devices to improve security and privacy of their devices. It uses ClamAV database to scan for malware and warn users about apps with dangerous permissions. It also enforces some settings based on CIS recommendations.

Malware scan is offline and based on two databases:
- ClamAV database, which is updated daily. The app will download the database when it is outdated.
- PObY-A database, managed by ICTrust.

## Features

| PObY-A Features | |
|----------------------------------------------------------------|-----|
| 🚫 No Ads or Purchases | |
| 📙 Translations (FR & EN) | |
| 🪲 Malware scan | |
| ⏱️ Live monitoring (install/uninstall) | |
| 🔐 Enforce settings privacy based on some CIS* recommendations | |
| ⚠️ Warn of apps with dangerous* permissions | |
| ⚡ Many more coming... | |
| PObY-A Features | |
|----------------------------------------------------------------|---|
| 🚫 No Ads or Purchases ||
| 📙 Translations (FR & EN) ||
| 🪲 Malware scan ||
| 🛡️ CVD: ClamAV database integration | |
| 🔐 Enforce settings privacy based on some CIS* recommendations ||
| ⚠️ Warn apps with dangerous* permissions ||
| ⚡ Many more coming... ||

**CIS:** Center of Internet Security
**CIS:** Center for Internet Security

**dangerous**: "A higher-risk permission that would give a requesting application access to private user data or control over the device that can negatively impact the user" [permission element](https://developer.android.com/guide/topics/manifest/permission-element)

## Supported Android versions
**8.0 (API 26) to 12 (API 31)**
**8.0 (API 26) to 13 (API 34)**

## Required permissions
- Write system settings
- "force-lock" admin permission
- Bluetooth permission: needed to automate disable bluetooth
- Foreground service permission: needed for live monitoring
- External Storage


## Screenshots
<div style="display: block; margin: auto; margin-left: auto; margin-right: auto;" >
<img src="screenshots/sidemenu.jpg" alt="drawing" width="200"/>
<img src="screenshots/dashboard.jpg" alt="drawing" width="200"/>
<img src="screenshots/AppsMenu.jpg" alt="drawing" width="225"/>
<img src="screenshots/AppPermissions.jpg" alt="drawing" width="215"/>
<img src="screenshots/dashboard.png" alt="drawing" width="200"/>
<img src="screenshots/MalwareScan.jpg" alt="drawing" width="200"/>
<img src="screenshots/noThreatFound.jpg" alt="drawing" width="215"/>
<img src="screenshots/PossibleMalwareFound.jpg" alt="drawing" width="200"/>
<img src="screenshots/settings.jpg" alt="drawing" width="200"/>
<img src="screenshots/MalwareScan.png" alt="drawing" width="200"/>
<img src="screenshots/app_preferences.png" alt="drawing" width="200"/>
<img src="screenshots/ThreatApp.png" alt="drawing" width="200"/>
<img src="screenshots/settings.png" alt="drawing" width="200"/>
<img src="screenshots/ActionSettings.jpg" alt="drawing" width="200"/>
<img src="screenshots/preferences.png" alt="drawing" width="200"/>
</div>


## Disclaimer
ICTrust is not affiliated with ClamAV.


76 changes: 35 additions & 41 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ apply plugin: 'kotlin-parcelize'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 33
compileSdk 35
defaultConfig {
applicationId "ch.ictrust.pobya"
minSdkVersion 26
targetSdkVersion 33
versionCode 9
versionName "1.5.1"
targetSdkVersion 34
versionCode 13
versionName "1.6.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
kapt {
Expand All @@ -31,75 +31,69 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
packagingOptions {
exclude("META-INF/DEPENDENCIES")
exclude("META-INF/LICENSE")
exclude("META-INF/LICENSE.txt")
exclude("META-INF/license.txt")
exclude("META-INF/NOTICE")
exclude("META-INF/NOTICE.txt")
exclude("META-INF/notice.txt")
exclude("META-INF/ASL2.0")
exclude("META-INF/*.kotlin_module")
exclude("META-INF/INDEX.LIST")
exclude("META-INF/io.netty.versions.properties")
resources {
excludes += ['META-INF/DEPENDENCIES', 'META-INF/LICENSE', 'META-INF/LICENSE.txt', 'META-INF/license.txt', 'META-INF/NOTICE', 'META-INF/NOTICE.txt', 'META-INF/notice.txt', 'META-INF/ASL2.0', 'META-INF/*.kotlin_module', 'META-INF/INDEX.LIST', 'META-INF/io.netty.versions.properties']
}
}
buildToolsVersion '30.0.3'
namespace 'ch.ictrust.pobya'
}

dependencies {

def room_version = "2.5.1"
def kotlin_version = "1.6.10"

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.navigation:navigation-fragment:2.1.0'
implementation 'androidx.navigation:navigation-ui:2.1.0'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.core:core-ktx:1.15.0'
implementation 'androidx.core:core:1.15.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
implementation 'androidx.navigation:navigation-fragment:2.8.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.8.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.8.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.8.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test:runner:1.6.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'

implementation 'androidx.multidex:multidex:2.0.1'

//ActionSheet
implementation 'com.baoyz.actionsheet:library:1.1.7'

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

implementation 'com.github.psinetron:slycalendarview:0.0.9@aar'
implementation 'com.savvi.datepicker:rangepicker:1.3.0'
implementation 'com.github.traex.calendarlistview:library:1.2.3'

//lottie
implementation 'com.airbnb.android:lottie:3.4.0'
implementation 'com.airbnb.android:lottie:6.6.0'

// ProgressView
implementation 'com.github.owl-93:DeterminateProgressView:v1.0'

// Kotlin Coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")

// Lifecycle
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0")

// Room
implementation("androidx.room:room-runtime:$room_version")
kapt "androidx.room:room-compiler:$room_version"
implementation("androidx.room:room-ktx:$room_version")
implementation 'com.google.android.flexbox:flexbox:3.0.0'
implementation 'com.google.android.material:material:1.8.0'

implementation('com.google.android.flexbox:flexbox:3.0.0')

implementation('com.google.android.material:material:1.12.0')

// okhttp
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation 'com.google.code.gson:gson:2.8.9'
implementation('com.google.code.gson:gson:2.9.0')

// Apache Commons Compress library
implementation('org.apache.commons:commons-compress:1.22')
implementation 'commons-io:commons-io:2.13.0'

}

45 changes: 15 additions & 30 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="8">

android:versionCode="13">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WHITELIST_RESTRICTED_PERMISSIONS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />

<application
android:allowBackup="false"
android:icon="@mipmap/poby"
android:label="@string/app_name"
android:roundIcon="@mipmap/poby"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
android:hardwareAccelerated="false"
android:requestLegacyExternalStorage="true"
android:largeHeap="true">
<activity android:name=".activity.SplashActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -34,41 +32,28 @@
</activity>
<activity
android:name=".activity.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" />
<activity android:name=".activity.WalkthroughActivity" />
<activity
android:name=".activity.AppDetailActivity"/>

<receiver
android:name="ch.ictrust.pobya.utillies.AppAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN"
android:exported="false">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_receiver" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
<service android:name=".service.ApplicationsService"
android:enabled="true"
<receiver android:name="ch.ictrust.pobya.utillies.PackageInstallUninstallReceiver"
android:exported="false"
android:process="ch.ictrust.pobya.ApplicationsService"
android:stopWithTask="false">
android:directBootAware="true"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package"/>
<data android:scheme="package" />
</intent-filter>
</service>
</receiver>
<service android:name=".service.MalwareScanService"
android:enabled="true"
android:exported="false">
</service>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />

</application>
</manifest>
18 changes: 18 additions & 0 deletions app/src/main/java/ch/ictrust/pobya/Utillies/AppAdminReceiver.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
/*
* This file is part of PObY-A.
*
* Copyright (C) 2023 ICTrust Sàrl
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package ch.ictrust.pobya.utillies;

import android.app.admin.DeviceAdminReceiver;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
/*
* This file is part of PObY-A.
*
* Copyright (C) 2023 ICTrust Sàrl
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package ch.ictrust.pobya.utillies

import androidx.fragment.app.Fragment
Expand All @@ -17,7 +35,7 @@ class AppViewPagerAdapter(fm: FragmentManager) :
return listTitles.size
}

override fun getPageTitle(position: Int): CharSequence? {
override fun getPageTitle(position: Int): CharSequence {
return listTitles[position]
}

Expand Down
Loading

0 comments on commit 039f847

Please sign in to comment.