如何在android中打开Alert DIalog System level

时间:2014-01-17 07:05:50

标签: android

我有一个应用程序在连接/断开蓝牙设备时打开警报对话框。 警报对话框由蓝牙设备连接上的BroadcastReceiver触发。

我想打开一个提醒对话框,以便在我打开应用时(应用A)>长按回家>转到另一个应用程序(应用程序B),连接蓝牙设备 - >来自应用A的警报将显示在应用B的顶部。

现在发生的事情是,如果我回到应用程序A,我只能看到对话框

我目前的代码:

    final AlertDialog.Builder dialog = new AlertDialog.Builder(activity,
            AlertDialog.THEME_DEVICE_DEFAULT_DARK);

    ... some setting here

    final AlertDialog alert = dialog.create();
    alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    alert.show();

2 个答案:

答案 0 :(得分:7)

这可能对你有帮助......

    @Override
    public void onReceive(Context context, Intent intent) {
        final WindowManager manager = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
        layoutParams.gravity = Gravity.CENTER;
        layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
        layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
        layoutParams.alpha = 1.0f;
        layoutParams.packageName = context.getPackageName();
        layoutParams.buttonBrightness = 1f;
        layoutParams.windowAnimations = android.R.style.Animation_Dialog;

        final View view = View.inflate(context.getApplicationContext(),R.layout.test_layout, null);
        Button yesButton = (Button) view.findViewById(R.id.yesButton);
        Button noButton = (Button) view.findViewById(R.id.noButton);
        yesButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                manager.removeView(view);
            }
        });
        noButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                manager.removeView(view);
            }
        });
        manager.addView(view, layoutParams);
    }
}

答案 1 :(得分:0)

为了实现这一目标,您需要在您的清单中获得SYSTEM_ALERT_WINDOW权限。