Включите следующие разрешения в манифест вашего приложения как дочерний элемент application
.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Также включите получатель в манифест
<!-- SAMPLE APPLICATION IS NAME OF OUR APPLICATION -->
<receiver android:name="SampleApplication"
android:enabled="true"
android:exported="true"
android:permission="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Создайте класс, который расширяет android.telephony.PhoneStateListener
и реализуйте его onCallStateChanged
public class
class MyPhoneStateListener extends PhoneStateListener
{
public void onCallStateChanged(int state, String incomingNumber)
{
Log.d("SampleApp","Incoming call from: "+incomingNumber);
}
}
Теперь у вас onCreate () вызовите TelephonyManager и добавьте этот класс в качестве слушателя:
TelephonyManager myTelManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
MyPhoneStateListener myListner = new MyPhoneStateListener();
myTelManager.listen(myListner, PhoneStateListener.LISTEN_CALL_STATE);
Вы можете проверить результат в LogCat.
РЕДАКТИРОВАТЬ: завершить класс, который хранит ответ в переменной:
import android.app.Activity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class SampleApp extends Activity{
private String incomingCallNumber="";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rating);
TelephonyManager myTelManager =
(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
MyPhoneStateListener myListner = new MyPhoneStateListener();
myTelManager.listen(myListner, PhoneStateListener.LISTEN_CALL_STATE);
}
class MyPhoneStateListener extends PhoneStateListener
{
public void onCallStateChanged(int state, String incomingNumber)
{
SampleApp.this.incomingCallNumber=incomingNumber;
}
}
}