标准通话界面上的活动窗口 - 启用按钮

3
我想在通话屏幕活动中添加一个小窗口(弹出窗口)。Google语音和worldcallplaceandtime在通话过程中都会添加相同的窗口。
问题是当我在屏幕顶部打开一个新的活动时,其余的按钮都被禁用了(结束通话、静音等)。唯一的选择是关闭新添加的活动后,才能点击结束通话按钮。
请问有人可以告诉我如何在屏幕上添加一个小窗口并仍然能够使用通话标准按钮吗?

你有没有得到这个问题的解决方案?@shaimagz - Pinki
2个回答

0
这是我用来在呼叫屏幕上添加覆盖按钮而不禁用按钮的代码。希望能对您有所帮助。
    public void addInvitePopup(final String number){
    //check if pref is ok with invite in call
    if(!Preferences.getInstance(getApplicationContext()).getInviteInCall()){return ; }
    // sets the WindowManager
    wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | 
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    params.x = 250;
    params.height = LayoutParams.WRAP_CONTENT;
    params.width = LayoutParams.WRAP_CONTENT;
    params.format = PixelFormat.TRANSLUCENT;


    params.gravity = Gravity.TOP;
    params.setTitle("Testing");

    ly = new LinearLayout(getApplicationContext());
    ly.setOrientation(LinearLayout.VERTICAL);

    Button inviteButton = new Button(getApplicationContext());
    inviteButton.setClickable(true);
    inviteButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.invite_incall_off));
    inviteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "Inviting by free SMS..", Toast.LENGTH_LONG).show();
            v.setBackgroundDrawable(getResources().getDrawable(R.drawable.invite_incall_on));
            v.setClickable(false);
            sendMessage(v, number);

            //Track this event:
            MixPanelTracking.setPropKeyValue(getApplicationContext(), null, null, "Add friend - During Call");
        }
    });

    //closeInviteButton. ///////////////////////
    closeInviteButton = new Button(getApplicationContext());
    closeInviteButton.setClickable(true);
    //closeInviteButton.setGravity(Button.);
    closeInviteButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.close_invitebutton_off));
    closeInviteButton.setWidth(30);
    closeInviteButton.setHeight(30);
//  closeInviteButton.setLayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
//          WindowManager.LayoutParams.WRAP_CONTENT);

    closeInviteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            removeInvitePopup();
            //Add to Preferences:
            //Preferences.getInstance(v.getContext()).setInviteInCall(false);
            //Track this event:

        }
    });
    ////////////////////////////////////////////
    ly.addView(inviteButton);

    wm.addView(ly, params);
    wm.addView(closeInviteButton, params);
    Log.i("TTT", "after add view");
}
public void removeInvitePopup(){
    if(ly != null){
        wm.removeView(ly);
        wm.removeView(closeInviteButton);
        ly =  null;
        closeInviteButton = null;
    }
}

0
如果我在IDLE状态下使用removeInvitePopup(),会收到一个异常。当你错过电话时,关闭邀请按钮不会消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接