Запустите BroadcastReceiver, когда приложение убито Android - PullRequest
0 голосов
/ 06 декабря 2018

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

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

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

РЕДАКТИРОВАТЬ Мой класс получателя:

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>
...