1

私は電話のサービス状態をチェックしているアプリを開発していますが、電話が機内モードのときに応答しないか、電話にSIMがないため、機能しません。plzは私にコードを助けてくれます

TelephonyManager telMng=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        telMng.listen(new PhoneStateListener(){

                     @Override
                public void onServiceStateChanged (ServiceState serviceState){
                  super.onServiceStateChanged(serviceState);
                  String phonestate;
                 switch(serviceState.getState())
                  {
                 case ServiceState.STATE_IN_SERVICE:

                     Toast.makeText(getApplicationContext(), "phone is in service", Toast.LENGTH_LONG).show();
                     break;
                 case ServiceState.STATE_OUT_OF_SERVICE:
                     Toast.makeText(getApplicationContext(), "Phone is not in Service state", Toast.LENGTH_LONG).show();
                     break;
                     default:phonestate="Unknown";
                  }
                 /*

                  switch(serviceState.getState()){
                  case ServiceState.STATE_EMERGENCY_ONLY: phonestate ="STATE_EMERGENCY_ONLY"; ;break;
                  case ServiceState.STATE_IN_SERVICE: phonestate ="STATE_IN_SERVICE"; ;break;
                  case ServiceState.STATE_OUT_OF_SERVICE: phonestate ="STATE_OUT_OF_SERVICE"; ;break;
                  case ServiceState.STATE_POWER_OFF: phonestate ="STATE_POWER_OFF"; ;break;
                  default:phonestate = "Unknown";
                  } 
                  */  
            } 
        },  
        PhoneStateListener.LISTEN_SERVICE_STATE);

    }  
                                                                                                                                              i tried above code but its not working when phone is in flight mode or have not sim insert inside the phone what should i do plz help 

前もって感謝します

4

2 に答える 2

1

電話が機内モードになっているかどうかを確認し、SIM カードが存在する場合は、このリンクを参照してください

機内モード リンク: Android で機内モードを検出するにはどうすればよいですか?

SIM カードのリンク: SIM カード が Android デバイスで利用できるかどうかを確認するにはどうすればよいですか?

于 2013-01-23T13:59:18.560 に答える
0

上記は正しい答えではありません。SIM カードが使用されているかどうかだけを示しているからです。

TelephonyManager.listen(PhoneStateListener() { ... }, PhoneStateListener.LISTEN_SERVICE_STATE);

サービス状態を即時かつ定期的に発行する必要があります。sim の状態とサービスの状態を混在させると、間違った結果が得られます。つまり、サービスを停止しますが、sim の状態は準備完了のままです。

于 2014-03-07T14:51:22.223 に答える