【问题标题】:Incoming Call Screen obstruction by an Activity (Theme Dialog) over it活动(主题对话框)在其上的来电屏幕阻塞
【发布时间】:2017-04-14 08:54:18
【问题描述】:

我试图在来电屏幕上显示一个活动(带有主题对话框)以显示一些信息。我已经完成了,但问题是每当来电时,活动对话框就会弹出它并覆盖 SLIDER(用于接受/拒绝呼叫)。

我希望在来电屏幕上显示活动对话框,但仍希望用户接听/拒绝来电。

我确实使用过这个但现在无法完成活动(对话框)。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

热烈的问候

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);   

getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        setContentView(R.layout.notedialog);
        this.setFinishOnTouchOutside(false);
        initializeContent();

        phone_no = getIntent().getExtras().getString("phone_no");
        String note  = getIntent().getExtras().getString("note");

        tv_client.setText(phone_no + " is calling you");
        note_mEditText.setText(note);

        dialog_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.finish();
           //        this.setFinishOnTouchOutside(false);
                System.exit(0);
            }
        });

【问题讨论】:

  • 你能给我看一些代码吗?
  • 请检查问题先生。 @阿舒
  • 啊这是安卓问题,抱歉我不是安卓开发者:)
  • 没关系,先生。顺便说一句。
  • 所以你的 SLIDER 有一个重叠的活动对话框。你想要的是向右移动它的位置?

标签: android android-activity dialog


【解决方案1】:

不需要带有对话框样式的 Activity。 仅当您要显示对话框时才调用此方法。 这将在您的手机顶部创建一个对话框。

final Dialog dialog;
public void showDialog(){
  dialog = new Dialog(this,
            android.R.style.Theme_Translucent_NoTitleBar);

    // Setting dialogview
    Window window = dialog.getWindow();
    window.setGravity(Gravity.TOP);

    window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    dialog.setTitle(null);
    dialog.setContentView(R.layout.notedialog);
    dialog.setCancelable(true);

    dialog.show();
    }

若要取消对话,请调用此方法。

public void cancelDialog(){
if(dialog!= null ){
dialog.dismiss()
}
}

如果你坚持使用Activity对话框,你可以使用这个方法来改变窗口的位置。

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();

    View view = getWindow().getDecorView();
    WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
    lp.gravity = Gravity.CENTER | Gravity.TOP
    lp.x = 10;
    lp.y = 10;
    lp.width = 300;
    lp.height = 300;
    getWindowManager().updateViewLayout(view, lp);
}

【讨论】:

  • 它在 dialog.show(); android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 上崩溃
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
相关资源
最近更新 更多