Skip to content

Instantly share code, notes, and snippets.

View kmerrell42's full-sized avatar

Kelly Merrell kmerrell42

  • Mercury Intermedia
  • United States
View GitHub Profile
@kmerrell42
kmerrell42 / LaunchActivity.kt
Last active December 9, 2022 00:31
Sample implementation and extension function to help with handling initialization behind the Android 12+ “system” Splash Screen.
package io.mercury.example
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@kmerrell42
kmerrell42 / LifecycleEffects.kt
Last active December 9, 2022 00:29
Composable effects for the Android Lifecycle (onCreate, onResume, onPause, etc)
package io.mercury.android.coroutines.lifecycle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.Lifecycle.Event.ON_PAUSE
public class SmsBroadcastReceiver extends BroadcastReceiver {
...
@Override
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
@kmerrell42
kmerrell42 / SmsBroadcastReceiver.java
Last active April 18, 2017 20:51
Create a BroadcastReceiver that accepts a callback to let us know the verification code has been received
public class SmsBroadcastReceiver extends BroadcastReceiver {
private final OnVerificationCodeReceivedListener codeReceivedListener;
public SmsBroadcastReceiver(@NonNull OnVerificationCodeReceivedListener codeReceivedListener) {
this.codeReceivedListener = codeReceivedListener;
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO: See if this message is coming from the expected phone number
public class LaunchActivity extends AppCompatActivity {
private static final int REQUEST_CODE_READ_SMS = 101;private static final int REQUEST_CODE_READ_SMS = 101;
...
}
@kmerrell42
kmerrell42 / LaunchActivity.java
Last active April 18, 2017 20:24
Handle request permission
public class LaunchActivity extends AppCompatActivity {
...
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_READ_SMS: {
@kmerrell42
kmerrell42 / LaunchActivity.java
Last active April 18, 2017 20:21
Ask for permission when "Next" button is clicked
public class LaunchActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
findViewById(R.id.next_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(LaunchActivity.this,
@kmerrell42
kmerrell42 / gist:5b0cac77dca89bb688d1e94c909c1105
Created March 21, 2017 18:28
Android createIntent() example
public class MovieDetailActivity extends AppCompatActivity {
private static final String EXTRA_MOVIE_ID = "extra:movieId";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movie_detail);
String movieId = savedInstanceState.getString(EXTRA_MOVIE_ID);
public class NullObject {
private static class NullInvocationHandler implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Class<?> returnType = method.getReturnType();
if (returnType == Byte.TYPE || returnType == Short.TYPE || returnType == Integer.TYPE ||
returnType == Long.TYPE || returnType == Float.TYPE || returnType == Double.TYPE ||
returnType == Character.TYPE) {
@kmerrell42
kmerrell42 / gist:4a25009433e28e6e62e76f19da44cb65
Last active March 21, 2017 18:27
Android InstanceState and createIntent() examples
public class MovieDetailActivity extends AppCompatActivity {
private static final String EXTRA_INSTANCE_STATE = "extra:instanceState";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_movie_detail);
InstanceState is = InstanceState.from(getIntent().getExtras());