I'm making an app that will trigger outgoing call with alarm manager. Also, that outgoing call should be monitored, to check if call was successful, busy or whatever. My problem is how to call for PhoneStateListener in BroadCastReceiver?
MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startAlert(View view) {
EditText text = (EditText) findViewById(R.id.time);
int i = Integer.parseInt(text.getText().toString());
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (i * 1000), pendingIntent);
}
}
BroadCastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(android.Manifest.permission.PROCESS_OUTGOING_CALLS,context.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
Intent myIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "+38163670832"));;
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
}
}
}
Example of PhoneStateListener that I would like to apply
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
//Kada se korisnik javi
Toast.makeText(context, "Veza uspostavljena", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_IDLE:
//Idle stanje
Toast.makeText(context, "Idle mod", Toast.LENGTH_LONG).show();
break;
}
}