Я хочу, чтобы мое приложение было всегда над всеми остальными окнами, и чтобы клики проходили через другие окна ниже.На данный момент используется следующий код (взятый из разных мест в stackoverflow :):
В onCreate я вызываю:
checkDrawOverlayPermission();
Ниже приведен код для checkDrawOverlayPermission ().Намерение запускается для получения разрешения пользователя на запуск приложения в виде наложения:
public void checkDrawOverlayPermission() {
/** check if we already have permission to draw over other apps */
if (!Settings.canDrawOverlays(this)) {
/** if not construct intent to request permission */
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
/** request permission via start activity for result */
startActivityForResult(intent, REQUEST_CODE);
}
}
onActivityResult () раздел, как показано ниже:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
...
case REQUEST_CODE:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
0 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
params.gravity = Gravity.RIGHT | Gravity.TOP;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(imagePane, params);
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
Файл манифеста имеет следующую строку:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Для imagePane (ImageView), добавляемого в качестве представления для наложения, в файле activity_main.xml установлены следующие свойства:
android:background="@android:color/transparent"
android:scaleType="centerInside"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
С помощью приведенного выше кода приложениеотображается в виде прозрачного окна на главном экране телефона.Однако щелчки или прикосновения не принимаются окнами под этим приложением.Я попытался запустить
imagePane.setEnabled (false);
Это отключает клики на панели изображений, но клики по-прежнему не принимаются окнами ниже этого приложения,Любая идея, как получить клики, которые будут получены окнами под приложением?