Skip to content

Instantly share code, notes, and snippets.

@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / UpdateManager.kt
Created September 18, 2024 10:52
Download any file using DownloadManager class
package com.bacancy.dispenserhmi.utils
import android.app.DownloadManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.net.Uri
import android.os.Build
import android.os.Environment
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / MainActivity.kt
Created April 26, 2024 12:14
Call APIs parallely or waiting for previious api to finish using coroutines in Android Kotlin
private suspend fun fetchDataParallel() {
try {
Log.d(TAG, "fetchDataParallel: Started")
val deferredData1 = lifecycleScope.async {
delay(3000)
"Hello"
}
val deferredData2 = lifecycleScope.async {
delay(5000)
"World"
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / HMISplashActivity.kt
Created February 13, 2024 12:15
Load image stored in App's internal directory
private fun loadImage() {
//val picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
// /storage/emulated/0/Android/data/com.bacancy.ccs2androidhmi/files/
val picturesDirectory = getExternalFilesDir(null) ?: return
// Create a File object representing the desired directory
val directory = File(picturesDirectory.absolutePath)
// Check if the directory exists
if (directory.exists()) {
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / HMISplashActivity.kt
Created February 13, 2024 12:14
Create New Folder in App internal directory structure
fun createFolderInAppDirectory() {
val folderName = FOLDER_NAME
val appDirectory = getExternalFilesDir(null) ?: return
val folder = File(appDirectory, folderName)
if (!folder.exists()) {
if (folder.mkdir()) {
Log.d("MyApp", "Folder created successfully!")
loadImage()
} else {
Log.e("MyApp", "Failed to create folder")
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / HMISplashActivity.kt
Last active February 13, 2024 11:10
Load image file from Pictures directory and show in imageview
private fun loadImage() {
// Specify the directory path for Pictures
val picturesDirectory =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
// Create a File object representing the desired directory
val directory = File(picturesDirectory.absolutePath)
// Check if the directory exists
if (directory.exists()) {
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / CSVExporter.kt
Created February 9, 2024 11:31
Create and export CSV file from list of data provided.
package com.bacancy.ccs2androidhmi.util
import android.content.Context
import android.os.Environment
import android.util.Log
import com.bacancy.ccs2androidhmi.db.entity.TbChargingHistory
import java.io.File
import java.io.FileWriter
import java.io.IOException
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / SecureStoreBaseURL.kt
Created April 21, 2023 04:09
How to securely store BASE URLs in our Android Apps?
//Encryption using Android Keystore:
private fun encryptUrl(context: Context, url: String): String {
val keystore = KeyStore.getInstance(ANDROID_KEYSTORE)
keystore.load(null)
val key = keystore.getKey(KEY_ALIAS, null) as SecretKey
val cipher = Cipher.getInstance(AES_MODE)
cipher.init(Cipher.ENCRYPT_MODE, key)
val encryptedBytes = cipher.doFinal(url.toByteArray())
return Base64.encodeToString(encryptedBytes, Base64.DEFAULT)
}
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / ActivitiesLaunchingWay.kt
Created July 27, 2022 10:45 — forked from wajahatkarim3/ActivitiesLaunchingWay.kt
Kotlin Extensions for simpler, easier and funw way of launching of Activities
/**
* Kotlin Extensions for simpler, easier and funw way
* of launching of Activities
*/
inline fun <reified T : Any> Activity.launchActivity (
requestCode: Int = -1,
options: Bundle? = null,
noinline init: Intent.() -> Unit = {})
{
@DharmeshBasapatiBacancy
DharmeshBasapatiBacancy / activity_main.xml
Created June 24, 2022 06:23
This gist contains code to create a layout which has collapsing toolbar layout with nested scrolling main content in the middle with one persistent bottom sheet at the bottom.
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
package com.example.utils
import android.content.Context
import android.view.LayoutInflater
import android.widget.LinearLayout
import android.widget.RadioButton
import android.widget.RadioGroup
import com.example.R