0

Я хотел бы сделать два вызова подряд в приложении Android. При нажатии кнопки приложение вызывает первый номер. Я создал передатчик ниже, который определяет, когда заканчивается первый вызов. Он должен написать, что «Первый вызов закончился», а затем вызовите второй номер. Думаю, я должен сделать это с PendingIntent. Я написал в своем коде комментарий, где, как мне кажется, мне нужно написать метод (который имеет параметры, один из которых - PendingIntent). Может ли кто-нибудь показать мне, как я могу это сделать?Как использовать PendingIntent для совершения второго вызова?

public class MainActivity extends AppCompatActivity { 

public void calling(String phone) { 


    Intent callIntent = new Intent(Intent.ACTION_CALL) 
      .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    callIntent.setData(Uri.parse("tel:" + phone)); 
    callIntent.putExtra("com.android.phone.extra.slot", 1); 
    startActivity(callIntent); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243 , callIntent, 0); 

//i think here should I use pendingIntent somehow, but I have no idea how 





} 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button b = (Button) this.findViewById(R.id.CallButton); 


    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      calling("+11111111"); 








     } 
    }); 


} 



public class CallReciever extends BroadcastReceiver { 

    private Context mContext; 
    private CustomPhoneStateListener mPhoneListener; 
    private String incoming_nr; 
    private int prev_state; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     mContext = context; 

     if (mPhoneListener == null) { 
      mPhoneListener = new CustomPhoneStateListener(); 

      // TelephonyManager object 
      TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 


      // Register our listener with TelephonyManager 
      telephony.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
     } 
    } 

    /* Custom PhoneStateListener */ 
    class CustomPhoneStateListener extends PhoneStateListener { 

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

      if (!TextUtils.isEmpty(incomingNumber)) { 
       incoming_nr = incomingNumber; 
      } 

      switch (state) { 
       case TelephonyManager.CALL_STATE_RINGING: 
        prev_state = state; 
        break; 

       case TelephonyManager.CALL_STATE_OFFHOOK: 
        prev_state = state; 
        break; 

       case TelephonyManager.CALL_STATE_IDLE: 
        if ((prev_state == TelephonyManager.CALL_STATE_OFFHOOK)) { 
         // A call has now ended 
         //it writes out the call end, but does not call. why? 
         Toast.makeText(mContext, "Call End", Toast.LENGTH_SHORT).show(); 
         calling("+22222222"); 
         prev_state = state; 
        } 
        else if ((prev_state == TelephonyManager.CALL_STATE_RINGING)) { 
         // Rejected or Missed call 
         Toast.makeText(mContext, "Rejected Call", Toast.LENGTH_SHORT).show(); 
         prev_state = state; 
        } 
        break; 

      } 
     } 
    } 
} 

}

ответ

0

Этот код без ожидающего намерения

Он будет работать во всех случаях, если вызов принят, отклоненных или отмененных.

Позвольте мне знать, если это работает для вас

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
Button button1,button2; 
boolean FLAG = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button1 = (Button)findViewById(R.id.callButton); 
    button2 = (Button)findViewById(R.id.callButton2); 

    button1.setOnClickListener(this); 
    button2.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 

    if(v == button1) 
    { 

     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_CALL); 
     intent.setData(Uri.parse("tel:"+"number1")); 
     startActivity(intent); 
     Toast.makeText(MainActivity.this, ""+FLAG, Toast.LENGTH_SHORT).show(); 
     FLAG = true; 
    } 

    if(v == button2) 
    { 
     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_CALL); 
     intent.setData(Uri.parse("tel:"+"number2")); 
     startActivity(intent); 


    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if(FLAG) 
    { 
     button2.performClick(); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       FLAG = false; 
      } 
     },5000); 
    } 
    Toast.makeText(MainActivity.this, ""+"resumed"+FLAG, Toast.LENGTH_SHORT).show(); 

} 

}

+0

на самом деле, приложение должно иметь только одну кнопку, и при нажатии кнопки приложение вызывает первый номер. Когда первый вызов заканчивается, он должен автоматически вызывать второй номер –

+0

Сделать новый метод secondCall(); и вместо button2.performClick() вызов secondCall(); –

 Смежные вопросы

  • Нет связанных вопросов^_^