Я разрабатываю приложение android, в котором я хочу получить номер входящего вызова, поэтому я создал контекстно-зависимый receiver
и зарегистрировал его в моем MainActivity
. Но мой приемник никогда не срабатывает, независимо от того, находится ли приложение в foreground
или background
. Я проверил Android документы, и они упомянули, что вы должны использовать контекстные приемники для Android 8.0+
, но они еще не сделали это исключение для широковещательных приемников PHONE_STATE
, но я использую контекстно-зависимые, чтобы быть в безопасности. Вот как я регистрирую свой приемник:
private void registerMyReceiver() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Receiver Triggered !!", Toast.LENGTH_SHORT).show();
}
};
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.PHONE_STATE");
this.registerReceiver(broadcastReceiver, intentFilter);
}
}
Я даже прошу разрешения на время выполнения:
private void grantPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 0);
}
}
Заранее спасибо.