0

回線がつながっていて相手の電話が鳴っている状態ってありますか?きちんと接続されている状態を知りたいのですが、相手はあなたが電話をかけていることを知って電話に出ることができますか?

私はこれを試しましたが、電話が鳴る状態にはなりません:

public void onReceive(final Context context, Intent intent) {
TelephonyManagerTm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        Tm.listen(new PhoneStateListener(){
            public void  onCallStateChanged(int state,String number) {
                super.onDataConnectionStateChanged(state);
                switch(state)
                {
                    case TelephonyManager.CALL_STATE_RINGING:
                        Toast.makeText(context, "Phone Ringing", 1).show();
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:

                        break;
                    case TelephonyManager.CALL_STATE_IDLE: 
                        Toast.makeText(context, "call rejected", 1).show();                 
                        break;
                }
            }
        },PhoneStateListener.LISTEN_CALL_STATE);
4

3 に答える 3

1

はい、状態を取得できますPhoneStateListener

PhoneStateListener からクラスを拡張するとonCallStateChanged()、次のようになります。

 public class CustomPhoneStateListener extends PhoneStateListener {

      ActivityManager activityManager;
      Intent i1;
      public CustomPhoneStateListener(Context context) {
          super();
          this.context = context;
          i1 = new Intent(context, TelephoneyWithoutToastActivity.class);
          i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      }

      @Override
      public void onCallStateChanged(int state, String incomingNumber) {
          super.onCallStateChanged(state, incomingNumber);

          switch (state) {
          case TelephonyManager.CALL_STATE_IDLE:
              //when Idle i.e no call
              Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show();

              break;
          case TelephonyManager.CALL_STATE_OFFHOOK:

              //when Off hook i.e in call
              //Make intent and start your service here
              Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show();

              break;
          case TelephonyManager.CALL_STATE_RINGING:

              ActivityManager localActivityManager = (ActivityManager) this.context.getSystemService("activity");
              for (String str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString();; str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString()) {
                  if ((!str.contains("com.android.phone.InCallScreen")))
                      continue;
                  Log.d("IncomingCallPlus", "*****************************************************");   
                  context.startActivity(i1);
                  return;
              }    

          default:
              break;
          }
      }    
  }

参考のために、これをチェックしてください

于 2013-10-21T10:06:51.073 に答える