From 036cdb1ca313c3a00d48a511a70f498769260035 Mon Sep 17 00:00:00 2001 From: "kudanill." Date: Tue, 6 Aug 2024 19:01:01 +0700 Subject: [PATCH 1/6] Feat(Permission): Add request permission --- app/build.gradle | 14 ++++- app/src/main/AndroidManifest.xml | 52 +++++++++++-------- .../com/passwordmanager/MainActivity.java | 38 +++++++++++--- .../passwordmanager/utils/Permissions.java | 35 +++++++++++++ app/src/main/res/layout/activity_main.xml | 19 ++++--- app/src/main/res/values/strings.xml | 6 ++- app/src/main/res/values/themes.xml | 22 ++++---- 7 files changed, 134 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/passwordmanager/utils/Permissions.java diff --git a/app/build.gradle b/app/build.gradle index 857e4e0c..e10de03a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { android { compileSdk 33 namespace "com.passwordmanager" - + defaultConfig { applicationId "com.passwordmanager" minSdk 26 @@ -14,12 +14,23 @@ android { versionName "1.0" } + signingConfigs { + release { + storeFile file("passwordmanager.jks") + storePassword 'beMbDcv94lv3' + keyAlias 'passwordmanager' + keyPassword 'beMbDcv94lv3' + } + } + buildTypes { release { + signingConfig signingConfigs.release minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -29,5 +40,4 @@ android { dependencies { implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.core:core:1.10.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b68c384..11d3ca40 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,28 +1,38 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.passwordmanager"> - - + - - - - + + + - - - - + + + + + + + + + diff --git a/app/src/main/java/com/passwordmanager/MainActivity.java b/app/src/main/java/com/passwordmanager/MainActivity.java index 801ced42..9ab88d33 100644 --- a/app/src/main/java/com/passwordmanager/MainActivity.java +++ b/app/src/main/java/com/passwordmanager/MainActivity.java @@ -1,13 +1,37 @@ package com.passwordmanager; -import android.app.Activity; import android.os.Bundle; +import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import com.passwordmanager.utils.Permissions; -public class MainActivity extends Activity { +public class MainActivity extends AppCompatActivity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + private Permissions permissionsHandle; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // Check and request permission when the app is first opened + permissionsHandle = new Permissions(this); + if (!permissionsHandle.checkPermission()) permissionsHandle.requestPermission(); + } + + @Override + public void onRequestPermissionsResult( + int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == Permissions.PERMISSION_REQUEST_CODE) { + if (permissionsHandle.isPermissionGranted(grantResults)) { + // Permission has been granted + Toast.makeText(this, getString(R.string.permission_granted), Toast.LENGTH_LONG).show(); + } else { + // Permission not granted + Toast.makeText(this, getString(R.string.permission_denied), Toast.LENGTH_LONG).show(); + } } -} \ No newline at end of file + } +} diff --git a/app/src/main/java/com/passwordmanager/utils/Permissions.java b/app/src/main/java/com/passwordmanager/utils/Permissions.java new file mode 100644 index 00000000..030c8001 --- /dev/null +++ b/app/src/main/java/com/passwordmanager/utils/Permissions.java @@ -0,0 +1,35 @@ +package com.passwordmanager.utils; + +import android.Manifest; +import android.app.Activity; +import android.content.pm.PackageManager; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +public class Permissions { + + public static final int PERMISSION_REQUEST_CODE = 100; + private final Activity activity; + + public Permissions(Activity activity) { + this.activity = activity; + } + + // Check if permission has been granted + public boolean checkPermission() { + int resultWrite = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); + int resultRead = ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE); + return resultWrite == PackageManager.PERMISSION_GRANTED && resultRead == PackageManager.PERMISSION_GRANTED; + } + + // Request write and read file permissions + public void requestPermission() { + ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE); + } + + // Check if permission has been granted after the request + public boolean isPermissionGranted(@NonNull int[] grantResults) { + return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED; + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c0b3e918..d87b18de 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,15 +1,14 @@ + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + tools:context=".MainActivity"> - + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39290ff2..5d258bd9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,7 @@ - Password Manager + Password Manager + + + Permission Granted + Permission Denied \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 971e4a58..5b23d86b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,12 +1,12 @@ - - - + + + From de3dc642f9912f904d5b1ee0b683e70b29e9c570 Mon Sep 17 00:00:00 2001 From: HamadaNative Date: Tue, 6 Aug 2024 14:24:01 +0100 Subject: [PATCH 2/6] Update MainActivity.java making the main activity fullscreen --- app/src/main/java/com/passwordmanager/MainActivity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/com/passwordmanager/MainActivity.java b/app/src/main/java/com/passwordmanager/MainActivity.java index 9ab88d33..240f0d7b 100644 --- a/app/src/main/java/com/passwordmanager/MainActivity.java +++ b/app/src/main/java/com/passwordmanager/MainActivity.java @@ -14,6 +14,9 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + // Make window fullscreen + WindowCompat.setDecorFitsSystemWindows(getWindow(), false); // Check and request permission when the app is first opened permissionsHandle = new Permissions(this); From 724e5422e065eb441d08d95544d200e3b3645d6f Mon Sep 17 00:00:00 2001 From: HamadaNative Date: Tue, 6 Aug 2024 14:26:07 +0100 Subject: [PATCH 3/6] Update MainActivity.java imports for fullscreen --- app/src/main/java/com/passwordmanager/MainActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/passwordmanager/MainActivity.java b/app/src/main/java/com/passwordmanager/MainActivity.java index 240f0d7b..a7b46bfb 100644 --- a/app/src/main/java/com/passwordmanager/MainActivity.java +++ b/app/src/main/java/com/passwordmanager/MainActivity.java @@ -4,6 +4,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.view.WindowCompat; import com.passwordmanager.utils.Permissions; public class MainActivity extends AppCompatActivity { From 4dfa22d50d2c399c4678d3edf39b601f22b5eba2 Mon Sep 17 00:00:00 2001 From: HamadaNative Date: Tue, 6 Aug 2024 14:30:38 +0100 Subject: [PATCH 4/6] Update colors.xml Creating the base colors --- app/src/main/res/values/colors.xml | 51 ++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127d..249479e9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,41 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file + + + + + From 9996078c1284f3d3534fb3fa3590d6eb5ebc6119 Mon Sep 17 00:00:00 2001 From: HamadaNative Date: Tue, 6 Aug 2024 14:32:39 +0100 Subject: [PATCH 5/6] Update themes.xml Creating the base theme --- app/src/main/res/values/themes.xml | 51 +++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 5b23d86b..eafb2406 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,12 +1,41 @@ - - - + + + + From 7eaee538cde849bf114a6ca1eeda9e058387f5bf Mon Sep 17 00:00:00 2001 From: HamadaNative Date: Tue, 6 Aug 2024 14:33:49 +0100 Subject: [PATCH 6/6] Update colors.xml Creating the base color --- app/src/main/res/values/colors.xml | 99 ++++++++++++++++++------------ 1 file changed, 61 insertions(+), 38 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 249479e9..93824d8d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,41 +1,64 @@ - + - + #6750A4 + #FFFFFF + #EADDFF + #21005D + #625B71 + #FFFFFF + #E8DEF8 + #1D192B + #7D5260 + #FFFFFF + #FFD8E4 + #31111D + #B3261E + #FFFFFF + #F9DEDC + #410E0B + #79747E + #FFFBFE + #1C1B1F + #FFFBFE + #1C1B1F + #E7E0EC + #49454F + #313033 + #F4EFF4 + #D0BCFF + #000000 + #6750A4 + #CAC4D0 + #000000 + #D0BCFF + #381E72 + #4F378B + #EADDFF + #CCC2DC + #332D41 + #4A4458 + #E8DEF8 + #EFB8C8 + #492532 + #633B48 + #FFD8E4 + #F2B8B5 + #601410 + #8C1D18 + #F9DEDC + #938F99 + #1C1B1F + #E6E1E5 + #1C1B1F + #E6E1E5 + #49454F + #CAC4D0 + #E6E1E5 + #313033 + #6750A4 + #000000 + #D0BCFF + #49454F + #000000