20110423
■[memo]Android secret codeの実装方法 
例えば、IMEI(端末識別番号)などは、ダイアラーから「*#06#」と入力すると表示されます。こんな感じに。
この「*#06#」のようなものがAndroid secret codeです。シークレットコードは、このIMEI表示のようにフレームワークで予約されたものもありますが、自分で作ることもできます。ダイアラーで「*#*#」で始まり「#*#*」で終わるコードなら、Broadcast Recieverで拾える仕組みがフレームワークで用意されてます。自分のアプリに隠し機能やイースターエッグ、あとデバッグモードへの切替機能をつけたい場合などにつかえます。
実装方法
シークレットコード「*#*#5963#*#*」を入力したら、秘密の画面を開くようなサンプルを作るとします。
AndroidManifest.xml
ダイアラーで入力したら、Androidフレームワークは「android_secret_code://」で始まるBroadcastIntentを投げます。例えば「*#*#5963#*#*」と入力したら、BroadcastIntentの内容は
- ACTION名 : android.provider.Telephony.SECRET_CODE
- data : android_secret_code://5963
なので、MainReceiverのintent-filterを以下のように設定します。
<receiver android:name=".MainReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SECRET_CODE" /> <data android:scheme="android_secret_code" android:host="5963" /> </intent-filter> </receiver>
MainReceiver.java
普通にRecevierで拾ったあとの処理を実装します。ここでは、秘密の画面を開くためにSecretActivityにIntentを投げています。
public class MainRecevier extends BroadcastReceiver { private static String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SECRET_CODE_ACTION)) { Intent secretIntent = new Intent(context, SecretActivity.class); secretIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(secretIntent); } } }
SecretActivity.java
ここではシークレットコード入れたあと開く画面を実装しています。
public class SecretActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { TextView tx = new TextView(this); tx.setText("Welcome to my secret page!"); super.onCreate(savedInstanceState); setContentView(tx); } }
結果
実装するとこんな感じ。
意外と簡単なので、いろんな隠し機能をしこんでみてください!ただし他のアプリとコードがかぶらないようにね。
つーやん
2012/04/15 12:16
そのプログラムはどこに打ち込めばいいんですか?
- 6 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=android+Strictmode&aq=f&aqi=g1&aql=&oq=
- 6 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4ADRA_jaJP392JP392&q=Android+2.33+解像度
- 5 http://search.yahoo.co.jp/search?p=アンドロイド携帯+解像度&ei=UTF-8&fr=oprsd&n=10&fl=0&x=wrt
- 5 http://www.google.co.jp/search?q=android+カラーピッカー&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 5 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=android+obb
- 5 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/Superdry/20110204/1296809054&rct=j&q=android SRC_OVER&ei=bBuzTfPeFIryvQPI8_iaBw&usg=AFQjCNGLsg7EORi5kXQh2BxxQg0dWpD5EQ
- 5 http://www.google.co.jp/url?sa=t&source=web&cd=3&ved=0CCcQFjAC&url=http://d.hatena.ne.jp/Superdry/20100329/1269878114&rct=j&q=android ホームキー イベント&ei=p_20TdnJG5DUvQOQ36i
- 5 http://www.google.com/search?hl=ja&lr=lang_ja&client=ubuntu&hs=BcX&channel=fs&tbs=lr:lang_1ja&q=AsyncQueryHandler+茲????&aq=f&aqi=&aql=&oq=
- 4 http://www.google.co.jp/
- 4 http://www.google.co.jp/search?aq=f&sourceid=chrome&ie=UTF-8&q=android+画面 解像度