Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
klmmn
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 6
1

Почему сервис выполняется с ошибкой (вывод картинки поверх всех окон)

25.04.2017, 00:12. Просмотров 355. Ответов 4
Метки нет (Все метки)

Здравствуйте.

Мне нужно реализовать вывод картинки поверх всех окон (в android 4.4.2 KitKat), по примеру этого - https://droidqd.wordpress.com/2015/0...en-in-android/.

Включил разрешение и объявил сервис в AndroidManifest.xml
XML
1
2
 <service android:name="com.my.exemple.FloatingFaceBubbleService"></service>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Код сервиса обрезал - перемещение картинки пока мне не нужно - сделал так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.my.exemple;
 
import android.app.Service;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;
 
 
public class FloatingFaceBubbleService extends Service {
    final String TAG = "MyLOGs";
    private WindowManager windowManager;
    private ImageView floatingFaceBubble;
 
    public void onCreate() {
        super.onCreate();
        floatingFaceBubble = new ImageView(this);
        //a face floating bubble as imageView
        floatingFaceBubble.setImageResource(R.drawable.bubble);
        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        //here is all the science of params
        final LayoutParams myParams = new WindowManager.LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT,
                LayoutParams.TYPE_PHONE,
                LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);
        myParams.gravity = Gravity.TOP | Gravity.LEFT;
        myParams.x = 0;
        myParams.y = 100;
        // add a floatingfacebubble icon in window
        try {
            windowManager.addView(floatingFaceBubble, myParams);
 
        } catch (Exception e) {
            Log.d(TAG, e.toString());
            e.printStackTrace();
        }
}
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

Запускаю сервис:
Java
1
startService(new Intent(this, FloatingFaceBubbleService.class));
В итоге в лог выдаётся ошибка:
04-25 00:10:36.080 23196-23196/com.my.exemple D/MyLOGs: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@42158548 -- permission denied for this window type

Подскажите, пожалуйcта, как это можно исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2017, 00:12
Ответы с готовыми решениями:

View поверх всех окон
Как сделать приложение, как это -...

Не выполняется сервис android
Приветствую. Пытаюсь запустить сервис. Делаю так package...

Вывод картинки поверх всех окон
Каким образом можно отобразить графический файл (bmp или jpg) без привязки к...

Вывод картинки (из файла jpg) на весь экран, поверх всех окон в MFC
Если ли класс у mfc для вывода изображений из файла,на весь экран? Чтобы можно...

Вывод формы поверх всех окон.
Вопрос конечно примитивный, но как чтобы при вызове новой формы, она была...

4
powowstal
30 / 30 / 5
Регистрация: 21.03.2013
Сообщений: 369
25.04.2017, 11:26 2
Цитата Сообщение от klmmn Посмотреть сообщение
permission denied for this window type
Говорит у вас нет прав, поищи какие разрешения нужно выставлять или тестируешь на более поздней версии андроид и разрешения нужно в ручную просить.
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
25.04.2017, 13:29 3
android.permission.INTERNAL_SYSTEM_WINDOW
или
uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW
0
klmmn
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 6
26.04.2017, 00:30  [ТС] 4
Понял свою ошибку - разрешения выставлял, но не в том месте ))

Возник вопрос по ходу дела.. Можно ли точно так же вывести кнопку button поверх всех окон?? Нигде не нашёл такой информации...
0
powowstal
30 / 30 / 5
Регистрация: 21.03.2013
Сообщений: 369
26.04.2017, 13:08 5
klmmn, передай вместо ImageView свою кнопку и увидишь.
Или поищи в windowManager методы кроме addView может там есть addButton
0
26.04.2017, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2017, 13:08

Вывод текста на экран, поверх всех окон
Каким образом можно выводить текст на экран, поверх всех окон, включая всякие...

Вывод графики на экран, поверх всех окон.
Здравствуйте! Интерисует такой вопрос, как можно выводить графику на экран, не...

Вывод прозрачного слоя графики поверх всех окон
Пришла в голову мысль написать программу для стумуляции скорости печати. Идея...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru