Skip to content

Instantly share code, notes, and snippets.

View patrickhammond's full-sized avatar

Patrick Hammond patrickhammond

View GitHub Profile
@patrickhammond
patrickhammond / TextViewHelper.java
Created March 12, 2015 13:51
Helper class that makes setting up links easier.
import android.text.Selection;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.widget.TextView;
@patrickhammond
patrickhammond / recreate.sh
Last active August 29, 2015 14:16
Migrates a project from one package to another.
#!/bin/sh
rm -rf app
mkdir -p app/src/main/java/com/mycompany/myapp
echo "import com.mycompany.myapp.R;" > app/src/main/java/com/mycompany/myapp/Test.java
echo "com.mycompany.myapp.SomeActivity" > app/AndroidManifest.xml
@patrickhammond
patrickhammond / gist:0b13ec35160af758d98c
Created March 8, 2015 02:30
Sample for how to use the Google Play Services dynamic security provider to keep the SSL library that the app will use to up date.
package com.mycompany.myapp.app;
import android.app.Application;
import android.content.Intent;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.security.ProviderInstaller;
import com.google.android.gms.security.ProviderInstaller.ProviderInstallListener;
public class MainApplication extends Application {
@patrickhammond
patrickhammond / GsonParser.java
Last active August 29, 2015 14:16
Jackson parser behavior when encountering integer, nulls, and empty strings.
import com.google.gson.Gson;
import java.io.IOException;
public class GsonParser implements Parser {
@Override
public <T> T parse(String json, Class<T> clazz) throws IOException {
return new Gson().fromJson(json, clazz);
}
}
@patrickhammond
patrickhammond / Optional.java
Created February 27, 2015 16:08
Optional implementation pillaged from Java 8 for when you don't have Java 8 APIs available. Optionally (ha!), you could take a look at Guava's Optional (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html)
/**
* In the absence of Java 8, here is our Optional duplicated code. Other than the package name,
* this should be a subset of this API, http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
*/
public final class Optional<T> {
public static <T> Optional<T> of(T value) {
if (value == null) {
return Optional.empty();
}
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import com.google.analytics.tracking.android.EasyTracker;
public class MainApplication extends Application {
private boolean locationNeedsUpdated = true;
private int createdActivityInstanceCount = 0;
@patrickhammond
patrickhammond / PRESENTATION.md
Last active August 29, 2015 14:15
Getting started with RemarkJS. See instructions.md for details

class: center, middle, title-slide

Visit for remarkjs.com for syntax

@patrickhammond
patrickhammond / checkHasPermission.java
Created February 5, 2015 00:42
Utility method to perform a runtime check that an app has been granted a permission.
public static void checkHasPermission(Context contxt, String permissionName) {
String packageName = context.getPackageName();
PackageManager packageManager = context.getPackageManager();
int permissionStatus = packageManager.checkPermission(permissionName, packageName);
if (permissionStatus != PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Application requires <uses-permission android:name=\"" + permissionName + "\" />");
}
}
@patrickhammond
patrickhammond / app_build.gradle
Created January 22, 2015 19:06
FindBugs snippet
...
apply plugin: 'findbugs'
...
task findbugs(type: FindBugs, dependsOn: assembleDebug) {
excludeFilter file("${project.rootDir}/config/findbugs/exclude.xml")
classes = fileTree('build/intermediates/classes/debug/') // Varies based on your app build configs and flavors...
source = fileTree('src/main/java/')
@patrickhammond
patrickhammond / bouncewifi.sh
Last active April 30, 2018 21:19
Utility to bounce the wifi connection every 55 minutes (to prevent an hourly boot).
#!/bin/sh
while true; do
sleep 3300 # 55 min * 60 sec
echo "Bouncing the wifi at `date`"
# You might need to change en1 to something else.
# ifconfig can tell you what network adapter to use
networksetup -setairportpower en1 off
sleep 2