Java tutorial
import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String number) { String phoneState = number; switch (state) { case TelephonyManager.CALL_STATE_IDLE: phoneState += "CALL_STATE_IDLE\n"; case TelephonyManager.CALL_STATE_RINGING: phoneState += "CALL_STATE_RINGING\n"; case TelephonyManager.CALL_STATE_OFFHOOK: phoneState += "CALL_STATE_OFFHOOK\n"; } TextView textView = (TextView) findViewById(R.id.textView); textView.append(phoneState); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); } private boolean checkCallPermission() { String permission = "android.permission.CALL_PHONE"; int res = checkCallingOrSelfPermission(permission); return (res == PackageManager.PERMISSION_GRANTED); } public void dialPhone(View view) { if (checkCallPermission()) { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:0123456789")); startActivity(intent); } } }