2011-02-08 6 views
6

私は基本的にSIMカードの状態に依存しているAndroidの自動起動アプリで作業しています。私のアプリが起動すると、SIMカードがどこで変更されたかを確認する必要があります。その後、私は現在のSIMを過去のSIMと比較します。しかし、新しいSIMカードの値を取得すると、アプリはnullポインタ例外を返します。Androidを検出するための電話マネージャ

シム状態に反応したいです。

私はSIM_STATE_READY状態を受け取ったときに、電話マネージャから新しいSIM状態を取得したいと考えています。

telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    int simState = telMgr.getSimState(); 

    switch (simState) 
    { 
     case (TelephonyManager.SIM_STATE_ABSENT): 
      System.out.println("*******************************************Sim State absent******************************"); 
      break; 
     case (TelephonyManager.SIM_STATE_NETWORK_LOCKED): 
      System.out.println("*******************************************SIM_STATE_NETWORK_LOCKED******************************"+sim); 
      break; 

     case (TelephonyManager.SIM_STATE_PIN_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PIN_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_PUK_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PUK_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_UNKNOWN): 
      System.out.println("*******************************************SIM_STATE_UNKNOWN******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_READY): 
     { 

     } 
    break; 
    } 
    default: break; 
    } 

私はこれをやってますが、私はその後、いくつかのコードを実行できるようにSIM用にSIMの準備ができたとき、私が欲しいの状態を監視する方法を知らないんです。デバイスが起動すると、常に "SIM_STATE_UNKNOWN"が返され、プログラムの実行が完了します。

これを達成するために手伝ってください。

コードの下

答えて

0

TelephonyManager mTelephonyMgr = 
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 

String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 
のAndroidマニフェストファイルに次のアクセス許可を設定し

SIMシリアル番号を取得するのに役立ちますandroid.permission.READ_PHONE_STATE

+0

HI ..私は、SIMなし..私はシムの状態に反応するようにしたい取得しながら、すべての問題を持っていけません。.. –

+1

getSimSerialNumber()はデュアルSIM携帯電話でどのように機能しますか? – gonzobrains

1

あなたがしようとしますアンドロイドエミュレータのあなたのアプリ? あなたのアプリケーションをAndroidの携帯電話で直接試してみる必要があります。私はAndroidのエミュレータでアプリケーションをサポートできないと思います。

3

あなたがリスナーを設定する必要がシムの変化に反応するようにしたい場合:

final TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 

    tm.listen(new PhoneStateListener() { 
     @Override 
     public void onServiceStateChanged(ServiceState serviceState) { 
      //Code in here executed on Sim State change 
     } 

     @Override 
     public void onDataConnectionStateChanged(int state) { 

     } 
関連する問題