Skip to content

Instantly share code, notes, and snippets.

View adityabhaskar's full-sized avatar
👣
à pied

Aditya adityabhaskar

👣
à pied
View GitHub Profile
@adityabhaskar
adityabhaskar / pinWidget.kt
Created December 7, 2020 11:29
Pinning an Android widget programmatically
private fun pinWidget(context: Context) {
val appWidgetManager = context.getSystemService(AppWidgetManager::class.java) ?: return
val myProvider = ComponentName(context.applicationContext, TaskListWidget::class.java)
if (!appWidgetManager.isRequestPinAppWidgetSupported) {
Timber.d("Widgets not supported")
return
}
// Create the PendingIntent object only if your app needs to be notified
@adityabhaskar
adityabhaskar / withPrefs.kt
Created November 27, 2021 16:23
Access SharedPreferences without StrictMode warnings
private fun <T> withPrefs(context: Context, callback: SharedPreferences.() -> T): T {
val oldPolicy = StrictMode.allowThreadDiskWrites()
val output = context.applicationContext
.getSharedPreferences(BILLING_STORAGE_NAME, Context.MODE_PRIVATE)
.callback()
StrictMode.setThreadPolicy(oldPolicy)
@adityabhaskar
adityabhaskar / dependencyGraph-mermaid.gradle
Last active May 17, 2023 17:32
Dependency graphs in a multi module project, in mermaid format for automatic rendering on Github
class GraphDetails {
LinkedHashSet<Project> projects
LinkedHashMap<Tuple2<Project, Project>, List<String>> dependencies
ArrayList<Project> multiplatformProjects
ArrayList<Project> androidProjects
ArrayList<Project> javaProjects
ArrayList<Project> rootProjects
// Used for excluding module from graph
public static final SystemTestName = "system-test"
@adityabhaskar
adityabhaskar / PreferenceDsl.kt
Last active November 17, 2025 15:38
Demo of simplistic preferences builder dsl
@Target(AnnotationTarget.TYPE)
@DslMarker
annotation class PreferenceDsl
@DslMarker
annotation class PreferenceBuilderDsl
@PreferenceBuilderDsl
interface BaseBuilder<out T> {
fun build(): T