Android: предотвращение появления всплывающих окон на экране - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть broadcastReceiver, который создает всплывающее окно поверх всех приложений, использующих WindowManager.

У меня это работает, но проблема сейчас в том, что при открытии всплывающего окна невозможно нажать на действия, которые включены.задняя часть всплывающего окна.создается впечатление, что существует большое прозрачное представление или что-то в этом роде.

Код BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
private static String TAG = "MyBroadcastReceiver";
private String number;
// private CustomDialog dialog;
private TelephonyManager telephonyManager;
private PhoneStateListener listener;
private Context context;

@Override
public void onReceive(Context context, Intent intent) {
    Log.i(TAG, intent.getStringExtra(TelephonyManager.EXTRA_STATE));
    Log.i(TAG, intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER));
    createOverlay(context);
}

public void createOverlay(Context context) {
    final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    final View customView;
    final WindowManager.LayoutParams params;

    params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            200,
            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
            PixelFormat.TRANSLUCENT
    );
    params.height = 200;
    params.width = WindowManager.LayoutParams.MATCH_PARENT;
    params.format = PixelFormat.TRANSLUCENT;
    params.gravity = Gravity.CENTER_VERTICAL;

    LayoutInflater mInflater = LayoutInflater.from(context);
    customView = mInflater.inflate(R.layout.caller_popup,null);
    ImageButton closeButton = (ImageButton) customView.findViewById(R.id.ib_close);
    closeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            wm.removeViewImmediate(customView);
        }
    });
    wm.addView(customView, params);

}

}

, а файл макета:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rl_custom_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="2dp"
    android:background="#ab2fc4"
    >
    <ImageButton
        android:id="@+id/ib_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_close"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:background="@null"
        />
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is a sample popup window."
        android:layout_centerInParent="true"
        android:padding="25sp"
        />
</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...