Skip to content

Instantly share code, notes, and snippets.

@shakalaca
shakalaca / gist:4251100
Created December 10, 2012 15:05
Detect current window size for Samsung Multi-Window system
mRootContainer = (RelativeLayout) findViewById(R.id.root_container);
ViewTreeObserver vto = mRootContainer.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// get current window size
int newWidth = mRootContainer.getWidth();
int newHeight = mRootContainer.getHeight();
@shakalaca
shakalaca / .htaccess
Created December 27, 2012 15:13
透過瀏覽 URL 的方式開啟特定 app, 如果 user 沒有安裝該 app, 則導引到 Play Store 提示使用者安裝.
Redirect /path_to_redirect market://details?id=com.example.package
@shakalaca
shakalaca / fb.java
Created January 4, 2013 07:29
點擊按鈕導引使用者進入 Facebook 專頁, 如果使用者有安裝 facebook client, 由它開啟, 否則開啟行動版網頁.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/<id>"));
List<ResolveInfo> activities = getPackageManager().queryIntentActivities(intent, 0);
if (activities.size() != 0) {
startActivity(intent);
} else {
intent.setData(Uri.parse("https://www.facebook.com/<你的專頁名稱>"));
startActivity(intent);
}
@shakalaca
shakalaca / SwitchGradle.txt
Created February 28, 2013 12:41
透過 homebrew 切換不同版本的 gradle
[shakalaca@Shakas-MacBook-Pro.local:~ ]
$ cd /usr/local/
[shakalaca@Shakas-MacBook-Pro.local:~ ]
$ brew versions gradle
1.4 git checkout 0b7303a /usr/local/Library/Formula/gradle.rb
1.3 git checkout c259bda /usr/local/Library/Formula/gradle.rb
1.2 git checkout 9b7d294 /usr/local/Library/Formula/gradle.rb
1.1 git checkout 7941972 /usr/local/Library/Formula/gradle.rb
1.0 git checkout dff67fb /usr/local/Library/Formula/gradle.rb
1.0-rc-3 git checkout 5f9e348 /usr/local/Library/Formula/gradle.rb
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
import android.os.Build;
import android.os.Process;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
@shakalaca
shakalaca / build.gradle
Created September 2, 2013 16:28
Rename output apk file
android.applicationVariants.all { variant ->
// replace output apk name to <product>-<version>-<buildtype>-<githash>.apk
def versionSuffix = variant.buildType.versionNameSuffix ? variant.buildType.versionNameSuffix : ""
def versionName = variant.mergedFlavor.versionName + versionSuffix + "-${gitHash}";
if (variant.zipAlign) {
def apkFinal = variant.outputFile;
variant.outputFile = new File(apkFinal.parentFile, apkFinal.name.replace(variant.buildType.name, versionName));
}
@shakalaca
shakalaca / build.gradle
Created September 13, 2013 14:32
Remove jar in output apk
configurations {
provided
}
dependencies {
provided files('libs/xxxx.jar')
}
android.applicationVariants.all { variant ->
variant.javaCompile.classpath += configurations.provided
@shakalaca
shakalaca / build.gradle
Created September 13, 2013 14:38
Remove jar in certain build type
dependencies {
compile files('libs/xxxx.jar')
}
android.applicationVariants.all { variant ->
if (variant.buildType.name.equals("release")) {
variant.dex.libraries = variant.dex.libraries - files('libs/xxxx.jar')
}
}
@shakalaca
shakalaca / gvm_root.sh
Created September 26, 2013 16:29
Run root shell in Genymotion VM
#!/bin/bash
adb wait-for-device > /dev/null 2>& 1
read IP PORT GARBAGE <<< $(adb devices | awk -F"[:\t]" ' NR > 1 && NF { print $1; print $2; print $3 } ')
adb -s $IP:$PORT root
adb connect $IP:$PORT