相关疑难解决方法(0)

Android:无法添加窗口.此窗口类型的权限被拒绝

我工作的一个应用程序,我需要显示一些信息的窗口ON未解锁手机的锁屏(键盘保护).我想我可以用WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG做到这一点

但每次我的应用程序崩溃时出现以下错误:

android.view.WindowManager $ BadTokenException:无法添加窗口android.view.ViewRootImpl$W@40ec8528 - 此窗口类型的权限被拒绝

这些帖子(这里,这里这里)都给出了相同的答案.在清单文件中添加以下权限.

android.permission.SYSTEM_ALERT_WINDOW

我已经实现的解决方案,但我仍然得到相同的错误.我知道我做错了什么?

以下是我的清单文件中的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.droidpilot.keyguardwindow" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
Run Code Online (Sandbox Code Playgroud)

这是我用来将Window添加到锁定屏幕的代码

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    mView = mInflater.inflate(R.layout.lock_screen_notif, null);

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG,
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED …
Run Code Online (Sandbox Code Playgroud)

android android-windowmanager

73
推荐指数
9
解决办法
10万
查看次数

锁定屏幕对话框通知,如whatsapp

我正在开发像whatsapp这样的聊天应用程序,我正在锁定屏幕上进行弹出通知.我开发了代码,但问题是 - 我在对话框上使用了两个按钮,如whatsapp作为关闭和视图,但按钮上的onclick监听器不起作用,因为对话框没有焦点,每当我点击任何地方的背景对话框点击屏幕执行点击.我需要这种类型的对话和功能,如 -

喜欢whatsapp中的这个对话框

但对话没有得到关注或问题是别的,我不能明确地得到它请帮助.

为了实现这一点,我正在使用以下服务 -

public class PopupService extends Service{

    @Override
    public IBinder onBind(Intent intent) {
        Utils.printLog("on bind");
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Utils.printLog("on start command");
        PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
        WakeLock mWakeLock = pm.newWakeLock((PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "YourServie");
        mWakeLock.acquire();
        mWakeLock.release();

        ///////////////////////////////////

        final WindowManager mWindowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        final View mView = inflater.inflate(R.layout.dialog_popup_notification_received, null);

        Utils.printLog("view" + mView.isClickable());
        mView.setClickable(true);
        mView.setFocusable(true);
        mView.setFocusableInTouchMode(true);

        mView.setOnClickListener(new OnClickListener() {

            @Override
            public void …
Run Code Online (Sandbox Code Playgroud)

notifications android dialog adt whatsapp

3
推荐指数
1
解决办法
4934
查看次数