我使用WindowManager在来电屏幕上创建一个浮动按钮。拨打新号码时,我可以单击按钮,然后弹出AlertDialog添加新联系人。但是,当有来电时,我单击按钮,弹出窗口不可滚动。当我结束通话时,弹出窗口可以滚动。我该如何解决这个问题?我需要它始终可滚动!
类PhonecallReceiver扩展了BroadcastReceiver:
@Override
protected void onIncomingCallStarted(Context ctx, String number, Date start) {
//...
if (!myDB.checkIsDataAlreadyInDBorNot(number)){
int LAYOUT_FLAG;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
}
wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
LAYOUT_FLAG,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
PixelFormat.TRANSPARENT);
params.flags =
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
params.gravity = Gravity.LEFT | Gravity.TOP;
params.x = 500;
params.y = 500;
LayoutInflater layoutInflater = LayoutInflater.from(ctx);
addButtonView =layoutInflater.inflate(R.layout.activity_add__new__button,null);
Button addButton =(Button)addButtonView.findViewById(R.id.addNEWContactBtn);
addButton.setOnClickListener(addNEWOnClickListener);
addButton.setOnTouchListener(addBtnTouchListener);
wm.addView(addButtonView, params);
//...
private Button.OnClickListener addNEWOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("you click me");
Intent intent=new Intent(context,Add_New_ButtonActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
};
Add_New_ButtonActivity:
public class Add_New_ButtonActivity extends Activity {
private AlertDialog.Builder dialogBuilder;
private AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createNewContactDialog();
// setContentView(R.layout.activity_add__new__button);
}
public void createNewContactDialog(){
dialogBuilder = new AlertDialog.Builder(this);
final View contactPopupView = getLayoutInflater().inflate(R.layout.activity_add_contacts, null);
dialogBuilder.setView(contactPopupView);
dialog = dialogBuilder.create();
dialog.show();
}
}
请提供任何帮助,非常感谢。