Вам необходимо добавить разрешение PROCESS_OUTGOING_CALLS
Создать OutboundCallReceiver
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
public class OutgoingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
if (tm.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK) {
String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
}
}
Добавить необходимые разрешения для чтения исходящего вызова в файле AndroidManifest
<uses-permission android:name="android.permission.NEW_OUTGOING_CALL" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Запрос разрешений во время выполнения
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS, Manifest.permission.READ_PHONE_STATE},
1);
}
Добавить OutgoingCallReceiver в файл AndroidManifest
<receiver
android:name=".application.services.OutgoingCallReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Этот код будет хорошо работать с вами, но , когда вам нужно загрузить свое приложение в Google play. Это нормально с разрешениями NEW_OUTGOING_CALL и READ_PHONE_STATE, но,
вы получите уведомление о политике от playStore:
Манифест вашего приложения запрашивает группу разрешений Журнала вызовов (например, PROCESS_OUTGOING_CALLS)
Он должен быть активно зарегистрирован в качестве обработчика телефона или помощника по умолчанию на устройстве.
в этом случае у вас есть 2 решения, только если вы хотите прочитать номер OutCommingCall:
Отправьте форму декларации в Google Форма декларации
Или создайте приложение для дозвона
Проверка Центр политик разработчика