0

アンドロイドアプリで連続して2回コールしたいと思います。ボタンをクリックすると、アプリは最初の番号を呼び出します。以下の放送受信機を作成しました。これは、最初の通話が終了したときを検出します。 「最初の通話が終了しました」と書き留めてから、2番目の番号を呼び出します。私はPendingIntentでそれを行うべきだと思います。私は私のコードで、私はメソッド(それはPendingIntentの1つのパラメータを持つ)を書く必要があると思うコメントを書いた。誰でも私にそれを手に入れることができますか?2回目の呼び出しに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

は、実際に、アプリは一つだけのボタンを持っている必要があり、ボタンをクリックすると、アプリが最初の番号を呼び出すために私を知ってみましょう。最初のコールが終了すると、自動的に2番目の番号が呼び出されます。 –

+0

新しいメソッドを作成するsecondCall(); button2.performClick()の代わりにsecondCall()を呼び出します。 –

関連する問題