Я haved решить эту проблему, используя следующие шаги
1) Добавить эти разрешения в AndroiMainFest.xml
<receiver android:name=".PhoneStateReceiver" android:enabled="true"
android:exported="true">
<intent-filter android:exported="true">
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
2) Создание PhoneStateReceiver.java
public class PhoneStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
// This is where you start your service
try {
System.out.println("Receiver start");
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
Toast.makeText(context, "Incoming Call State", Toast.LENGTH_SHORT).show();
Toast.makeText(context, "Ringing State Number is -" + incomingNumber, Toast.LENGTH_SHORT).show();
}
if ((state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))) {
Toast.makeText(context, "Call Received State", Toast.LENGTH_SHORT).show();
}
if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
Toast.makeText(context, "Call Idle State", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3) Добавить в MainActivity.java
if (ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.READ_PHONE_STATE) !=
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {} else {
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.READ_PHONE_STATE
},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}
}
4) Вы можете на разрешение в настройке> App> Ваш App> разрешение ИЛИ На ими программным
Reference Ссылка:http://www.theappguruz.com/blog/detecting-incoming-phone-calls-in-android
Пожалуйста, покажите, что ты пытался так далеко? – Gattsu
@ Maňish Yadav: Вы проголосовали за минусом? – Ved
Я не ... прочитайте это [как спросить] (http://stackoverflow.com/help/dont-ask) – Gattsu