在写手机卫士的时候,用户拨打|接听电话须要显示号码归属地,然后出现了一些异常,在此留下记号。希望对麻友们有帮助:

BUG教程

在使用 view = View.inflate(this, R.layout.ui_toast, null);获得View对象后wm.addView出现错误:

10-12 14:29:06.166: E/AndroidRuntime(1268): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@41087ed8 -- permission denied for this window type

解决的方法:

使用另外的方法获取:

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 mDesktopLayout = inflater.inflate(R.layout.volume_panel, null);

完整代码:

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 mDesktopLayout = inflater.inflate(R.layout.volume_panel, null);
 // 取得系统窗口
 mWindowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
 // 窗口的布局样式
 mLayoutParams = new WindowManager.LayoutParams();
 // 设置窗口显示类型――TYPE_SYSTEM_ALERT(系统提示)
 mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
 // 设置窗口焦点及触摸:
 // FLAG_NOT_FOCUSABLE(不能获得按键输入焦点)
 mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 // 设置显示的模式
 mLayoutParams.format = PixelFormat.RGBA_8888;
 // 设置对齐的方法
 mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
 // 设置窗口宽度和高度
 mLayoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
 mLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
 // 设置窗口显示的位置。否则在屏幕中心显示
 mLayoutParams.x = 50;
 mLayoutParams.y = 50;
 mWindowManager.addView(mDesktopLayout, mLayoutParams);

问题总结

这两种方式显示出来的窗体都不会激发当前Activity的onPause()事件。据说还能够先一个窗体风格的Activity。只是显示时会激发当前窗体的onPause()事件。详细咋样没试过。

推荐风格

<?xml version="1.0" encoding="utf-8"?

>  <resources>  
    <style  
        name="selectorDialog"  
        parent="@Android:style/Theme.Dialog">  
        <item name="android:windowFrame">@null</item><!--边框-->  
        <item name="android:windowIsFloating">true</item><!--是否浮如今activity之上-->  
        <item name="android:windowIsTranslucent">false</item><!--半透明-->  
        <item name="android:windowNoTitle">true</item><!--无标题-->  
        <!--<item name="android:windowBackground">@drawable/selector_dialog_bg</item>背景透明-->  
        <item name="android:backgroundDimEnabled">false</item><!--模糊-->  
        <item name="android:backgroundDimAmount">0.6</item>  
    </style>  </resources>

OK,谢谢关注破晓博客

版权声明:本文博客原创文章。博客,未经同意,不得转载。

使用WindowManager添加您自己的自定义视图的更多相关文章

  1. 采用WindowManager添加您自己的自定义视图

    原文地址:使用WindowManager加入自己定义视图 在写手机卫士的时候,用户拨打|接听电话须要显示号码归属地,然后出现了一些异常.在此留下记号,希望对麻友们有帮助: BUG教程 在使用 view ...

  2. 自定义视图一:扩展现有的视图,添加新的XML属性

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承 ...

  3. Android自定义视图三:给自定义视图添加“流畅”的动画

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

  4. Android自定义视图一:扩展现有的视图,添加新的XML属性

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

  5. 使用自定义视图的AlertDialog

    使用自定义视图的AlertDialog主要分为以下几个步骤: 1)利用XML文件构建自己的的视图 2)将视图添加到AlertDialog中 * 在进行第二步之前,有时需要对对话框窗口进行额外的设置 下 ...

  6. 自定义视图引擎,实现MVC主题快速切换

    一个网站的主题包括布局,色调,内容展示等,每种主题在某些方面应该或多或少不一样的,否则就不能称之为不同的主题了.每一个网站至少都有一个主题,我这里称之为默认主题,也就是我们平常开发设计网站时的一个固定 ...

  7. (翻译)为你的MVC应用程序创建自定义视图引擎

    Creating your own MVC View Engine For MVC Application 原文链接:http://www.codeproject.com/Articles/29429 ...

  8. iOS-xib(使用XIB实现嵌套自定义视图)

    参考:http://wtlucky.github.io/geekerprobe/blog/2014/08/10/nested-xib-views/?utm_source=tuicool 因为主要练习x ...

  9. BrnShop开源网上商城第五讲:自定义视图引擎

    今天这篇博文主要讲解自定义视图引擎,大家都知道在asp.net mvc框架中默认自带一个Razor视图引擎,除此之外我们也可以自定义自己的视图引擎,只需要实现IViewEngine接口,接口定义如下: ...

随机推荐

  1. Android开发之按键、触摸屏和手势输入专业压力測试方法

    按键输入.触摸屏输入和手势笔画输入等功能是Android开发的基本功能.其稳定性和健壮性对移动应用系统开发很重要.按键.触摸屏和手势输入专业压力測试方法能够使用Monkey,相应用程序进行压力測试,检 ...

  2. 一个带动画的页面底部的TabBar的实现

    有时有这样一个需求,页面底部有几个图标能够点击,假设一个screenWidth显示不下这些图标,则这一列图标最后一个是more,点击more,能够通过动画展示两列图标 这样来增加layout中: &l ...

  3. 改动EditPlus默认模板

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FvaGFpY2hlbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  4. [置顶] Codeforces Round #197 (Div. 2)(完全)

    http://codeforces.com/contest/339/ 这场正是水题大放送,在家晚上限制,赛后做了虚拟比赛 A,B 乱搞水题 C 我是贪心过的,枚举一下第一个拿的,然后选使差值最小的那个 ...

  5. POJ 36666 Making the Grade 简单DP

    题意是: 给出n个数,让你用最小的花费将其改成非递增或非递减的 然后花费就是新序列与原序列各个位置的数的差的绝对值的和 然后可以看到有2000个数,数的范围是10亿 仔细观察可以想象到.其实改变序列中 ...

  6. HDU2647-Reward(拓扑排序)

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. Emacs经常使用快捷键的注意事项

    一直用VIM,尝试了好几次Emacs都被它"多得像天上的星星"一样的快捷键给吓倒了.这几天最终下定决心再次尝试. 将它的Tutor练习了一下,顺便对经常使用快捷键做了一下笔记,方便 ...

  8. Yii 控制dropdownlist / select 控件的宽度和 option 的宽度

    默认情况下, option的宽度会由options中最宽的元素决定,并且同时决定着select控件的宽度 在Yii中,如果需要自定义select控件的宽度,可以用 htmlOptions定义,如下: ...

  9. Android他们控制的定义(一)

    培养自己的控制步骤定义: 1.要理解View作品  2. 分享到继承View子类 3. 要定义自己的View类添加属性  4. 绘制控件  5. 响应用户消息  6 .自己定义回调函数  一.View ...

  10. android 读,写图片sd网卡资源

    <pre name="code" class="html"><!--<span style="font-family: Ari ...