标签: android-windowmanager

Android 1.6:"android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序"

我正在尝试打开一个对话框窗口,但每次我尝试打开它都会抛出此异常:

Uncaught handler: thread main exiting due to uncaught exception
android.view.WindowManager$BadTokenException: 
     Unable to add window -- token null is not for an application
  at android.view.ViewRoot.setView(ViewRoot.java:460)
  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
  at android.app.Dialog.show(Dialog.java:238)
  at android.app.Activity.showDialog(Activity.java:2413)
Run Code Online (Sandbox Code Playgroud)

我是通过showDialog显示器的id 调用来创建的.该onCreateDialog处理器记录良好,我可以通过它没有问题的一步,但因为它看起来像我想的东西我已经把它贴吧:

@Override
public Dialog onCreateDialog(int id)
{
    Dialog dialog;
    Context appContext = this.getApplicationContext();
    switch(id)
    {
        case RENAME_DIALOG_ID:
            Log.i("Edit", "Creating rename dialog...");
            dialog = new Dialog(appContext);
            dialog.setContentView(R.layout.rename);
            dialog.setTitle("Rename " + noteName);
            break;
        default:
            dialog = null;
            break;
    }
    return dialog;      
}
Run Code Online (Sandbox Code Playgroud)

这有什么不足之处吗?有些问题在创建对话框时已经讨论过这个问题onCreate …

android runtimeexception android-dialog android-windowmanager

301
推荐指数
8
解决办法
19万
查看次数

Android中用什么API来创建聊天头?

Facebook如何在Android上创建聊天头?在所有其他视图之上创建浮动视图的API是什么?

android facebook android-windowmanager

225
推荐指数
3
解决办法
7万
查看次数

Android'无法添加窗口 - 令牌null不适用于应用程序'异常

当我尝试打开对话框时,我收到以下Android异常.有人可以帮我理解发生了什么,我该如何解决这个问题?

android.view.WindowManager$BadTokenException: 
  Unable to add window -- token null is not for an application
    at android.view.ViewRoot.setView(ViewRoot.java:509)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    at android.app.Dialog.show(Dialog.java:241)
Run Code Online (Sandbox Code Playgroud)

android runtimeexception android-dialog android-windowmanager

134
推荐指数
4
解决办法
13万
查看次数

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万
查看次数

Android活动超过默认锁定屏幕

如何在锁定屏幕上显示ActivityDialog显示?

通过在Activity.onCreate()方法中设置各种窗口类型,我已经尝试在屏幕打开时显示我的锁定活动:

TYPE_PRIORITY_PHONE
TYPE_SYSTEM_ALERT
TYPE_KEYGUARD

和其他人一起SYSTEM_ALERT_WINDOWINTERNAL_SYSTEM_WINDOW权限.

解锁设备后,我的活动可见.

更新:

我实际上已经设法显示我自己的Activity而不是默认锁定屏幕.除非您使用HOME按钮,否则它可以完美运行

android dialog lockscreen android-windowmanager android-activity

72
推荐指数
3
解决办法
8万
查看次数

android中的WindowManager是什么?

我试着谷歌搜索,没有直接和/或明确的答案.

开发者网站的定义不明确之一:

应用程序用于与窗口管理器通信的界面.使用 Context.getSystemService(Context.WINDOW_SERVICE)获得的其中之一.

有普通六年级英语的人可以解释它是什么吗?

我如何使用它来创建一个浮动对象,即使我从一个移动到另一个仍然通过几个活动?

android android-windowmanager

61
推荐指数
2
解决办法
4万
查看次数

异常java.lang.IllegalArgumentException:请求窗口android.os.BinderProxy@4205eb18不存在是什么意思

我正在尝试登录应用程序,但登录成功后即将进入下一个屏幕,它会重新启动.以下是我认为会引起这种情况的例外,因为没有其他例外.

11-14 15:09:54.841: W/WindowManager(643): Failed looking up window
11-14 15:09:54.841: W/WindowManager(643): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@4205eb18 does not exist
11-14 15:09:54.841: W/WindowManager(643):   at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7622)
11-14 15:09:54.841: W/WindowManager(643):   at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7613)
11-14 15:09:54.841: W/WindowManager(643):   at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1591)
11-14 15:09:54.841: W/WindowManager(643):   at android.os.BinderProxy.sendDeathNotice(Binder.java:417)
11-14 15:09:54.841: W/WindowManager(643):   at dalvik.system.NativeStart.run(Native Method)
11-14 15:09:54.841: I/WindowManager(643): WIN DEATH: null
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉,它是什么意思,如果可能的话,如何纠正它.

android illegalargumentexception android-windowmanager

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

IllegalArgumentException:添加窗口后无法更改窗口类型

我试过的建议在这里,建议在此情况下,建议在这里,我已经在我的基本活动注释掉onAttachedToWindow().我有两个活动继承自这个类BaseActivity.一个运行,一个不运行.有什么区别?我的目标SDK是19; 将它改为12没有区别.这是我的onCreate for BaseActivity:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onAttachedToWindow();
    super.onCreate(savedInstanceState);

    ....
    }
Run Code Online (Sandbox Code Playgroud)

当导航到第二个活动时,单步执行代码,它会通过onCreate(),onResume(),然后崩溃.

可能是什么问题呢?

堆栈跟踪:

06-26 13:41:57.963  28667-28667/com.assistek.ediary E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.assistek.ediary, PID: 28667
java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
        at android.os.Parcel.readException(Parcel.java:1550)
        at android.os.Parcel.readException(Parcel.java:1499)
        at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:903)
        at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:5301)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1507)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
        at android.view.Choreographer.doCallbacks(Choreographer.java:580)
        at android.view.Choreographer.doFrame(Choreographer.java:550)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254) …
Run Code Online (Sandbox Code Playgroud)

android android-windowmanager android-activity

21
推荐指数
1
解决办法
1万
查看次数

Android中"FLAG_BLUR_BEHIND"的替代?

我可以看到,当我使用API​​演示中显示的相同标志来模糊背景时,我得到一个警告,它已被弃用:

"不推荐使用WindowManager.LayoutParams.FLAG_BLUR_BEHIND字段".

我已经读过它了,我发现"不再支持模糊"了.

这是否意味着它不适用于未来的版本?他们为什么弃用它?还有其他选择吗?我真的很喜欢这个功能.

android dialog blur android-windowmanager android-activity

19
推荐指数
1
解决办法
2万
查看次数

在arrayadapter中交换数据时,从绑定器存根实现中捕获了RuntimeException

public class MainActivity extends AppCompatActivity {

     ArrayList<String> list = new ArrayList<>();

     ArrayAdapter<String> adapter;

     ArrayList<String> data1 = new ArrayList<>();

     ArrayList<String> data2 = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    for (int i = 0 ; i< 10 ;i++){
        data1.add(String.valueOf(i));
    }

    for (int i = 20; i < 30; i++){
        data2.add(String.valueOf(i));
    }

    Spinner spinner = (Spinner) findViewById(R.id.demo);
    adapter = new ArrayAdapter<>(this,android.R.layout.simple_dropdown_item_1line,list);
    spinner.setAdapter(adapter);
}

private void change(boolean which){
    if (which){
        list.clear();
        list.addAll(data1);

    }else{
        list.clear();
        list.addAll(data2);

    }
    adapter.notifyDataSetChanged();
}

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

java android spinner android-arrayadapter android-windowmanager

19
推荐指数
1
解决办法
2818
查看次数