我正在使用类似于truecaller的应用程序,并希望在本机调用屏幕上实现弹出活动。没问题,但是当设备锁定在防护装置活动上时显示,但是立即隐藏在电话屏幕下。这是我的代码:
public class IcomingCallActivity extends Activity {
WindowManager.LayoutParams wlp;
private int scrennHeight;
@Bind(R.id.phoneTextView) TextView phoneTextView;
@Bind(R.id.nameTextView) TextView nameTextView;
@Bind(R.id.avatarImageView) CircleImageView avatarImageView;
@Bind(R.id.spamTextView) TextView spamTextView;
@Bind(R.id.container) FrameLayout container;
private ActivityManager mActivityManager;
private boolean mDismissed = false;
private static final int MSG_ID_CHECK_TOP_ACTIVITY = 1;
private static final long DELAY_INTERVAL = 100;
private String number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
setContentView(R.layout.activity_incoming_call);
ButterKnife.bind(this);
scrennHeight = getDisplayHeight();
initiallizeScreen();
final View view = getWindow().getDecorView().findViewById(R.id.container);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) v.getLayoutParams();
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
lp.topMargin = (int) event.getRawY();
wlp = getWindow().getAttributes();
wlp.y = lp.topMargin - scrennHeight / 2;
getWindow().setAttributes(wlp);
break;
case MotionEvent.ACTION_UP:
SharedPreferencesSaver.get().saveCallDialogPosition((int) event.getRawY());
break;
}
return true;
}
});
}
活动风格是Dialog,但当我尝试将其设置为全屏窗口时,黑色背景和原生callcreen不可见