Выполнить BroadcastReceiver, когда приложение убито Android

Я делаю приложение, которое блокирует некоторые звонки. У меня есть радиоприемник, чтобы это исправить. Но когда я убиваю свое приложение (вручную или системой), приемник не работает.

Я подумал, что мне нужна служба, которая выполняет широковещательный приемник или блокирует вызовы для себя. Как я могу это сделать?

Спасибо за преимущество.

РЕДАКТИРОВАТЬ Мой класс приемника:

public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    ITelephony telephonyService;
    try {
        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);


        if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            try {
                Method m = tm.getClass().getDeclaredMethod("getITelephony");


                m.setAccessible(true);
                telephonyService = (ITelephony) m.invoke(tm);


                if ((number != null)) {
                    telephonyService.endCall();
                    Toast.makeText(context, "Ending the call from: " + number, Toast.LENGTH_SHORT).show();
                }


            } catch (Exception e) {
                e.printStackTrace();
            }


            Toast.makeText(context, "Ring " + number, Toast.LENGTH_SHORT).show();


        }
        if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
            Toast.makeText(context, "Answered " + number, Toast.LENGTH_SHORT).show();
        }
        if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) {
            Toast.makeText(context, "Idle " + number, Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Манифест моего получателя:

<receiver
        android:name = ".ARQ.IncomingCallReceiver"
        android:enabled = "true"
        android:exported = "true">
        <intent-filter>
            <action android:name = "android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

вы добавили получателя в свой файл манифеста?

procra 06.12.2018 13:38

Да, у меня в манифесте есть получатель. Но когда приложение убито, не работает.

Traif 06.12.2018 13:39

вы можете предоставить код своего класса Receiver?

procra 06.12.2018 13:40

Готово, надеюсь, ты лучше видишь.

Traif 06.12.2018 13:41

при первом взгляде я бы посоветовал проверить, возвращают ли что-нибудь intent.getStringExtra() или intent.getExtra()?

procra 06.12.2018 13:43

Но когда мое приложение убивают, когда я звоню, ничего не происходит. Неважно, если у намерения чего-то нет?

Traif 06.12.2018 13:45

попробуйте добавить exported = true в ваш широковещательный приемник в файле манифеста

Nazarii Moshenskiy 06.12.2018 13:50

Это сделано. Я отправлю вам приемник. Видеть.

Traif 06.12.2018 13:52
0
8
88
0

Другие вопросы по теме