Pracuję nad aplikacją, w której muszę zastąpić INCOMING CALL SCREEN.Przenieś domyślny ekran przychodzących wiadomości na telefon na telefonie PhoneManager.CALL_STATE_RINGING w Androidzie
Gdy urządzenie odbiera połączenie, muszę wyświetlić okienko wyskakujące z mojej aplikacji. Przeprowadziłem szczegółowe badania dotyczące tego zadania. CALL POPOUT to aplikacja, która używa tej samej funkcjonalności, ale nie otrzymuję kodu źródłowego.
Obecnie mam kilka modułów, dzięki którym możemy uzyskać działanie INCOMING CALL.
public class MyPhonestateListner extends PhoneStateListener {
Context context;
List<String> blockedNumberList = new ArrayList<String>();
BlockDataSource datasourceobj;
public MyPhonestateListner(Context context) {
super();
this.context = context;
}
@Override
public void onCallStateChanged(int state, String callingNumber) {
super.onCallStateChanged(state, callingNumber);
callingNumber = callingNumber.replace(" ", "");
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// handle out going call
// if(blockedNumberList.contains(callingNumber))
endCallIfBlocked(callingNumber);
break;
case TelephonyManager.CALL_STATE_RINGING:
// handle in coming call
new Handler().postDelayed(new Runnable() {
public void run() {
Intent intentPhoneCall = new Intent("android.intent.action.CALL");
intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentPhoneCall);
}
}, 10);
// if(blockedNumberList.contains(callingNumber))
//endCallIfBlocked(callingNumber);
// ActivityManagerNative.getDefault().moveTaskToBack(i);
//android.app.ActivityManager.RunningTaskInfo runningtaskinfo = TaskUtil.getPresentTaskInfo(this);
break;
default:
break;
}
}
}
MY reciever
public class BlockReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("I am reciever");
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
MyPhonestateListner listener = new MyPhonestateListner(context);
telephony.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
Z pomocą powyższego kodu, otrzymuję ekranu mapy mojej aplikacji na szczycie CALL ekranie, ale po prostu na kilka mikrosekund, a następnie połączenie przychodzące zostanie ekran na górze. Muszę PRZECHOWYWAĆ EKRAN WEWNĘTRZNY, gdy urządzenie odbiera każde połączenie i wyświetla ekran mojej aplikacji.
Proszę sugerować.
Hey @ Sam-In-TechValens, udało Ci się rozwiązać ten w końcu? – Nikola