Получить номер входящего звонка программно на Android - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь получить информацию о входящем звонке, используя широковещательные приемники на Android Studio.Ниже приведены методы, которые я попробовал:

<receiver android:name=".receivers.IncomingCalls">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>

По намерению этого получателя я попробовал:

Метод один:

incnumber=intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

Метод два:

final String state1 = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        telephony.listen(new PhoneStateListener(){
            @Override
            public void onCallStateChanged(int state, final String incomingNumber) {
                super.onCallStateChanged(state, incomingNumber);
                incnumber=incomingNumber;
            }
        },PhoneStateListener.LISTEN_CALL_STATE);

Метод третий:

incnumber=intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

Все три метода возвращают пустое число.

Кстати, я запускаю этот проект на пироге Android, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 01 марта 2019

Попробуйте следующим образом ... разрешение

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Сделайте так, чтобы широковещательный получатель сказал, что ServiceReceiver назначает свое действие в манифесте.

<receiver android:name=".ServiceReceiver" >
<intent-filter>
    <action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>

ServiceReceiver.Java

public class ServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(final Context context, Intent intent) {
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    telephony.listen(new PhoneStateListener(){
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            System.out.println("incomingNumber : "+incomingNumber);
        }
    },PhoneStateListener.LISTEN_CALL_STATE);
}

}

...