|
Prabhat Pandey Oodles

Prabhat Pandey (Mobile-Sr. Lead Development)

Experience:5+ yrs

Prabhat is an accomplished and detail-oriented Android Developer with extensive experience in Android, Kotlin, Java, and problem-solving. He possesses excellent communication skills and excels in bringing team members together to achieve common goals within given timeframes and budgets. Committed to delivering viable and functional app solutions, Prabhat consistently produces impeccable code. He has made valuable contributions to various projects, including the development of the Pandojo Android app using Kotlin and WebRTC, the DytaBank Android app using Kotlin and Jetpack Compose, the BancMania Android app using Firebase and Kotlin, and the TutorX Android app using WebSockets and WebRTC.

Prabhat Pandey Oodles
Prabhat Pandey
(Sr. Lead Development)

Prabhat is an accomplished and detail-oriented Android Developer with extensive experience in Android, Kotlin, Java, and problem-solving. He possesses excellent communication skills and excels in bringing team members together to achieve common goals within given timeframes and budgets. Committed to delivering viable and functional app solutions, Prabhat consistently produces impeccable code. He has made valuable contributions to various projects, including the development of the Pandojo Android app using Kotlin and WebRTC, the DytaBank Android app using Kotlin and Jetpack Compose, the BancMania Android app using Firebase and Kotlin, and the TutorX Android app using WebSockets and WebRTC.

LanguageLanguages

DotEnglish

Fluent

DotHindi

Fluent

Skills
Skills

DotAndroid for Cars

60%

DotCompose UI

100%

DotZoho

60%

DotCompose Libraries

100%

DotJava

80%

DotWear OS

60%

DotAndroid TV

80%

DotAppium

40%

DotFlutter

80%

DotHTML, CSS

60%

DotSpatial Computing

60%

DotKotlin

100%

DotARToolKit

60%

DotAndroid

100%

DotJavascript

80%

DotGame

60%

DotDRM

60%

DotCross Device SDK

40%

DotDeepAR

60%

DotMVVM

100%

DotGoogle VR SDK

60%

DotChatgpt

60%

DotJetpack Libraries

100%

DotNFC

60%

DotAndroid Studio

100%

DotARCore

60%

DotAugmented Reality

80%
ExpWork Experience / Trainings / Internship

Mar 2024-Present

Lead Mobile Development

Gurugram


Oodles Technologies

Gurugram

Mar 2024-Present

Jul 2022-Feb 2024

Senior Associate Consultant - Development

Gurugram, India


Oodles Technologies

Gurugram, India

Jul 2022-Feb 2024

Dec 2021-Jun 2022

Associate Consultant - Development (MOBILE)

Gurugram, India


Oodles Technologies

Gurugram, India

Dec 2021-Jun 2022

Jun 2019-Dec 2021

Freelance Android Developer

Remote, WFH


Freelance

Remote, WFH

Jun 2019-Dec 2021

EducationEducation

2011-2012

Dot

Punjab Technical University, Jalandhar

Post Graduate Diploma in Computer Application-Computer Science

certificateCertifications
Dot

Android O & Java - The Complete Android Development Bootcamp

Philipp Muellauer, Udemy

Issued On

Apr 2019

Dot

Become an Android Developer from Scratch

Udemy

Issued On

Apr 2019

Dot

The Complete App Design Course

London App Brewery, Udemy

Issued On

Apr 2019

Dot

Agile Development in the New World of Work

LinkedIn

Issued On

Jul 2021

Dot

Essential Lessons for First-Time Managers

LinkedIn

Issued On

Dec 2023

Top Blog Posts
How to Encrypt Local data with EncryptedSharedPreferences in Android

You must have used SharedPreferences in your app to store data locally in Key-Value pairs. But do you know, any malicious person can find and read all your SharedPreferences data? 

In this article, I will tell you how you can encrypt your local preferences using EncryptedSharedPrefs in your app.

 

EncryptedSharedPreferences

EncryptedSharedPreferences is a library offered by Android SDK. It is a wrapper around the SharedPreferences class and allows developers to automatically encrypt and decrypt keys and values while saving and reading the local data. 

Saving and reading the data is similar to SharedPreferences hence it becomes too easy to use this library. The only different thing is the setup of this library.

 

How to use EncryptedSharedPreferences?

Below are the steps to configure and use the EncryptedSharedPreference library. Keep in mind that you should not back up the preferences file with Auto Backup. Because it is more likely that the key used to encrypt the preferences will not be present after you restore the file. For more information on backup rules, visit [here].

 

Step 1

Add the below dependency inside your app-level build.gradle file.

 


// Security
implementation "androidx.security:security-crypto:1.0.0"

 

Step 2

Create an object named Keys in your application. This will hold all the keys that we will use in our secured shared prefs implementation.

 


// The singleton object to hold all keys for our secret prefs
object Keys {
    // ...
    // ...
    private const val EMAIL = "key_email"
    // ...
    // ...
}

 

Step 3

Create a new class as a delegation of EncryptedSharedPreferences and define context as a constructor argument. You can name it whatever you want but I name it SecretPrefs. 

If you are using any Dependency Injection (which you should), inject this class as a singleton. Because you don’t need to create a new instance of it every time you use it.

 


class SecretPrefs(private val context: Context) {

    // your code here

}

 

Step 4

Inside the SecretPrefs class, create a master key alias using the MasterKeys class.

 


private val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)

 

Step 5

Create an instance of SharedPreferences using EncryptedSharedPreferences.create() factory method. Pass the master key alias, file name, and encryption schemes for keys and values as arguments.

 


private val sharedPreferences = EncryptedSharedPreferences.create(
    "secret_prefs",
    masterKeyAlias,
    context,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

override val editor: SharedPreferences.Editor?
    get() = sharedPreferences.edit()
    

 

Step 6

Create functions for saving and reading the data using our EncryptedSharedPrefs instance.

 


// Method to save the email to encrypted prefs
fun saveEmail(email: String) {
    editor?.putString(Keys.EMAIL, email)
    editor?.apply()
}


// Method ro read the email from encrypted prefs
fun email() : String? = sharedPreferences.getString(Keys.EMAIL, null)

 

Step 7

Create a companion object inside SecretPrefs and put the below code inside that. It will make sure that you create only one instance of SecretPrefs and use it everywhere you need. You can also use dependency injection libraries like Hilt or Koin and inject SecretPrefs as a singleton.

 


companion object {

    @Volatile private var INSTANCE: SecretPrefs? = null

    fun getInstance(context: Context) : SecretPrefs =
        INSTANCE ?: synchronized(this) {
            INSTANCE ?: SecretPrefs(context).also { INSTANCE = it }
        }
}

 

Step 8

Create an instance of SecretPrefs and use it to save or read the data in key and value format from any class. 

 


class PlayStreamFragment : Fragment() {

    private var prefs: SecretPrefs? = null

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {


        // get singleton instance of SecretPrefs
        prefs = SecretPrefs.getInstance(requireContext())


        // save values
        prefs?.saveEmail("[email protected]")


        // read values 
        val savedEmail = prefs?.email()

    }

}

Verify

You can also verify that your locally saved data is encrypted. Go to Device File Explorer tab on your Android Studio while your device is connected. Navigate to data/data/YOUR_PACKAGE_NAME and open the shared preferences file. You will see that the keys and values you saved in it are encrypted.

Banner

Don't just hire talent,
But build your dream team

Our experience in providing the best talents in accordance with diverse industry demands sets us apart from the rest. Hire a dedicated team of experts to build & scale your project, achieve delivery excellence, and maximize your returns. Rest assured, we will help you start and launch your project, your way – with full trust and transparency!