I'm developing a kind of contact provider for android users. The main function is when someone calls to the phone (locked or non locked) it appears a popup window with some info about who is calling. The issue is that with android's version below 7.0 it runs correctly but in android 7.0 and above when the mobile is locked and someone calls the POPUPWINDOW IS APPEARING BELOW THE CALL SCREEN LAYOUT and is only seen when I hang up. So if someone could help in how to make popup window appear above the call screen layout in android 7.0 i would be really grateful.
pd. remember that in versions below 7.0 is running so the problem is in the new version.
Screenshot on how it runs in versions below 7.0
public class IncomingCallActivity extends Activity {
int mCurrentX = 0;
int mCurrentY = 500;
@Override
protected void onCreate(Bundle savedInstanceState) {
final LinearLayout fondo;
TextView text;
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_empty);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final View popupView = layoutInflater.inflate(R.layout.layout_incoming_call, null);
Button button = (Button)popupView.findViewById(R.id.close_window);
text = (TextView) popupView.findViewById(R.id.text);
button.setText("CLOSE WINDOW");
final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, 300);
new Handler().postDelayed(new Runnable() {
public void run() {
popupWindow.showAtLocation(popupView, Gravity.NO_GRAVITY,mCurrentX,mCurrentY);
popupView.bringToFront();
}
}, 100);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
finish();
}
});
popupView.setOnTouchListener(new View.OnTouchListener() {
int orgX, orgY;
int offsetX, offsetY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
orgX = (int) (mCurrentX - event.getRawX());
orgY = (int) (mCurrentY - event.getRawY());
break;
case MotionEvent.ACTION_MOVE:
mCurrentX = (int) event.getRawX() + orgX;
mCurrentY = (int) event.getRawY() + orgY;
popupWindow.update(mCurrentX, mCurrentY, -1, -1, true);
break;
}
return true;
}
});
String number = getIntent().getStringExtra(
TelephonyManager.EXTRA_INCOMING_NUMBER);
text.setText("Incoming call from " + number);
} catch (Exception e) {
Log.d("Exception", e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}