(prefix == Ctrl+f)
(vim movement keys)
prefix h
prefix j
| 1. hiltvm (applicable in top-level) | |
| @dagger.hilt.android.lifecycle.HiltViewModel | |
| class $NAME$ @javax.inject.Inject constructor( | |
| $PARAM$ | |
| ) : androidx.lifecycle.ViewModel() { | |
| $END$ | |
| } | |
| 2. vmstatefunc (applicable in class) | |
| private val _$NAME$ = androidx.compose.runtime.mutableStateOf<$TYPE$>($INITIAL_VALUE$) | 
| <?xml version="1.0" encoding="utf-8"?> | |
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
| package="com.cards.notification"> | |
| <uses-sdk | |
| android:minSdkVersion="17" | |
| android:targetSdkVersion="17" /> | |
| <application | |
| android:allowBackup="true" | 
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.activity_main); | |
| Button button = (Button) findViewById(R.id.button); | |
| button.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View v) { | |
| openDialog(); | |
| } | 
| -keepclassmembers class com.google.android.gms.dynamite.DynamiteModule { | |
| ** MODULE_ID; | |
| ** MODULE_VERSION; | |
| ** sClassLoader; | |
| } | |
| -keepclassmembers class com.google.android.gms.internal.in { | |
| ** mOrigin; | |
| ** mCreationTimestamp; | |
| ** mName; | |
| ** mValue; | 
| import android.app.Activity | |
| import android.content.Intent | |
| import android.content.IntentSender | |
| import android.os.Bundle | |
| import android.widget.Toast | |
| import androidx.appcompat.app.AppCompatActivity | |
| import androidx.core.content.ContextCompat | |
| import com.google.android.material.snackbar.Snackbar | |
| import com.google.android.play.core.appupdate.AppUpdateManager | |
| import com.google.android.play.core.appupdate.AppUpdateManagerFactory | 
| //http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript | |
| Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); | 
| /* | |
| * Copyright (C) 2017 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | 
| /* | |
| * Copyright (C) 2017 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | 
| <?xml version="1.0" encoding="utf-8"?><!-- | |
| ~ Copyright (C) 2015 The Android Open Source Project | |
| ~ | |
| ~ Licensed under the Apache License, Version 2.0 (the "License"); | |
| ~ you may not use this file except in compliance with the License. | |
| ~ You may obtain a copy of the License at | |
| ~ | |
| ~ http://www.apache.org/licenses/LICENSE-2.0 | |
| ~ | |
| ~ Unless required by applicable law or agreed to in writing, software |