package jp.co.cyberagent.stf; import android.app.Activity; import android.app.KeyguardManager; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.telephony.TelephonyManager; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class IdentityActivity extends Activity { private static final String TAG = "IdentityActivity"; public static final String ACTION_IDENTITY = "jp.co.cyberagent.stf.ACTION_IDENTIFY"; public static final String EXTRA_SERIAL = "serial"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); LinearLayout layout = new LinearLayout(this); layout.setKeepScreenOn(true); layout.setOrientation(LinearLayout.VERTICAL); layout.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT )); layout.setBackgroundColor(Color.RED); layout.setPadding(16, 16, 16, 16); layout.setGravity(Gravity.CENTER); TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String serial = intent.getStringExtra(EXTRA_SERIAL); if (serial == null) { serial = getProperty("ro.serialno", "unknown"); } layout.addView(createLabel("SERIAL")); layout.addView(createData(serial)); layout.addView(createLabel("MODEL")); layout.addView(createData(getProperty("ro.product.model", "unknown"))); layout.addView(createLabel("VERSION")); layout.addView(createData(Build.VERSION.RELEASE + " (SDK " + Build.VERSION.SDK_INT + ")")); layout.addView(createLabel("OPERATOR")); layout.addView(createData(tm.getSimOperatorName())); layout.addView(createLabel("PHONE")); layout.addView(createData(tm.getLine1Number())); layout.addView(createLabel("IMEI")); layout.addView(createData(tm.getDeviceId())); layout.addView(createLabel("ICCID")); layout.addView(createData(tm.getSimSerialNumber())); requestWindowFeature(Window.FEATURE_NO_TITLE); ensureVisibility(); setContentView(layout); } private View createLabel(String text) { TextView titleView = new TextView(this); titleView.setGravity(Gravity.CENTER); titleView.setTextColor(Color.parseColor("#c1272d")); titleView.setTextSize(16f); titleView.setText(text); return titleView; } private View createData(String text) { TextView dataView = new TextView(this); dataView.setGravity(Gravity.CENTER); dataView.setTextColor(Color.WHITE); dataView.setTextSize(24f); dataView.setText(text); return dataView; } private void ensureVisibility() { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); unlock(); WindowManager.LayoutParams params = window.getAttributes(); params.screenBrightness = 1.0f; window.setAttributes(params); } private String getProperty(String name, String defaultValue) { try { Class<?> SystemProperties = Class.forName("android.os.SystemProperties"); Method get = SystemProperties.getMethod("get", String.class, String.class); return (String) get.invoke(SystemProperties, name, defaultValue); } catch (ClassNotFoundException e) { Log.e(TAG, "Class.forName() failed", e); return defaultValue; } catch (NoSuchMethodException e) { Log.e(TAG, "getMethod() failed", e); return defaultValue; } catch (InvocationTargetException e) { Log.e(TAG, "invoke() failed", e); return defaultValue; } catch (IllegalAccessException e) { Log.e(TAG, "invoke() failed", e); return defaultValue; } } @SuppressWarnings("deprecation") private void unlock() { KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); keyguardManager.newKeyguardLock("InputService/Unlock").disableKeyguard(); } }