Проблема в том, что вы не запрашивали разрешение у пользователя. Если устройство работает под управлением Android 6.0 (уровень API 23), а targetSdkVersion приложения имеет значение 23 или выше, разрешение на вызов будет считаться опасным. Поэтому вы должны сначала получить правильное разрешение.
Прежде всего, добавьте
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.app.myapp" >
<uses-permission android:name="android.permission.CALL_PHONE" />
...
</manifest>
в ваш файл AndroidManifest.xml.
Тогда у меня метод вызывается нажатием кнопки.
public void onCall(View view) {
Intent callIntent = new Intent(Intent.ACTION_CALL); //use ACTION_CALL class
callIntent.setData(Uri.parse("tel:0800000000")); //this is the phone number calling
//check permission
//If the device is running Android 6.0 (API level 23) and the app's targetSdkVersion is 23 or higher,
//the system asks the user to grant approval.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
//request permission from user if the app hasn't got the required permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CALL_PHONE}, //request specific permission from user
10);
return;
}else { //have got permission
try{
startActivity(callIntent); //call activity and make phone call
}
catch (android.content.ActivityNotFoundException ex){
Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();
}
}
}