При входящем звонке на телефон всплывающее окно. Приложение работает, когда оно открыто. Однако, когда я полностью закрываю приложение, телефон не показывает всплывающее окно, даже если есть голосовой вызов. Приемник вещания не работает после закрытия приложения.
Мое устройство - Xiaomi Mi8
Это мой код:
public class CallBarring extends BroadcastReceiver {
private CustomDialog dialog;
private TelephonyManager telephonyManager;
private PhoneStateListener listener;
private Context context;
private Button btnEndCall;
private TextView incomingNumberName;
private List<String> data;
final NumberInfo numberInfo = new NumberInfo();
Retrofit retrofit = NetworkClient.getRetrofitClient();
NumberAPI numberAPI = retrofit.create(NumberAPI.class);
@Override
public void onReceive(Context context, Intent intent) {
if (!intent.getAction().equals("android.intent.action.PHONE_STATE"))
return;
else {
this.context = context;
if(dialog == null){
dialog = new CustomDialog(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else{
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
dialog.show();
}
// Fetch the number of incoming call
telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
listener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
String stateString = "N/A";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
stateString = "Idle";
dialog.dismiss();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
stateString = "Off Hook";
dialog.dismiss();
break;
case TelephonyManager.CALL_STATE_RINGING:
stateString = "Ringing";
dialog.show();
break;
}
}
};
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
telephonyManager.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
System.out.println("incomingNumber : "+incomingNumber);
fetchUserInfo(incomingNumber);
}
},PhoneStateListener.LISTEN_CALL_STATE);
}
}