2011年6月27日月曜日

[Android] 端末のSIMの状況を取得する

先日、上司に向けてアプリをつくったのですが、
かるーくスルーされたので「きー!!(怒)」となっています。

ま、そんな愚痴はともかく、
今日はSIMの有無を確認するコードを。

SIMの状況を取得するにはTelephonyManagerを使用します。
getSystemServiceでシステムの状況を取得すれば、判定することができます。

まずは取得。

int mStatus = 0;

TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mStatus = telManager.getSimState();

これでInt型で取得することができるので、あとは状況に応じて処理をふっていきます。

switch(mStatus) {
 case TelephonyManager.SIM_STATE_UNKNOWN: // SIM不明
     Toast.makeText(this, "まぁ、許す", Toast.LENGTH_SHORT).show();
     break;
 case TelephonyManager.SIM_STATE_ABSENT: // SIMなし
        Toast.makeText(this, "ゆるさない", Toast.LENGTH_SHORT).show();
        break;
 case TelephonyManager.SIM_STATE_PIN_REQUIRED: // PIN待ち
        Toast.makeText(this, "まぁ、いいか", Toast.LENGTH_SHORT).show();
        break;
 case TelephonyManager.SIM_STATE_PUK_REQUIRED: // PUK待ち
        Toast.makeText(this, "うーん、悩む", Toast.LENGTH_SHORT).show();
        break;
 case TelephonyManager.SIM_STATE_NETWORK_LOCKED:  // ロック
     Toast.makeText(this, "エクセレント!!", Toast.LENGTH_SHORT).show();
        break;
 case TelephonyManager.SIM_STATE_READY:  // 在り
        Toast.makeText(this, "とおるがいい", Toast.LENGTH_SHORT).show();
        break;
 default:
     Toast.makeText(this, "わかんないから許す", Toast.LENGTH_SHORT).show();
        break;
         
}

たったこれだけです。
まぁ、一応例外処理としてdefaultをいれております。
上のコードではSIMがある場合のみ次の処理へいくように・・・というためにかいたのですが、
分かりやすくするためにToastでメッセージを表示するだけにしておきました。

特にpermissionの設定もいらないので
適当にごにょごにょするには良いのではないかと思います。
設定値を勝手に変更すれば、エアな感じにもできるんじゃないのかな?と勝手に憶測。

といっても、現物SIMがないと結局は通信なんぞできないはず(なのかな?)なので
あんまり使うことはないかもですけど。

0 件のコメント:

コメントを投稿