`
VIP庚
  • 浏览: 223301 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android Dialog设置TYPE_SYSTEM_ALERT 有些手机不能显示问题

 
阅读更多

  在对话框初始的时候,设置
mProgressDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

可以让对话框始终显示在其他应用程序的window之上,也就是说这个dialog始终处于最上层,对用户始终可见,也就是说用户按了home之后dialog还在。
  这样做需要加上权限


<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />


  但是某些手机对底层进行了修改(小米,魅族之类),系统会默认会拒绝该权限。


解决:
通过将type设定为TYPE_TOAST, 就可以绕过检查
 mProgressDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
2
0
分享到:
评论
1 楼 jstl1point0 2016-08-08  
厉害,这个都知道

相关推荐

    详解Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限

    在`ActDialog`类中,将其主题设置为`@android:style/Theme.Dialog`,这样看起来就像一个对话框,而无需`SYSTEM_ALERT_WINDOW`权限。 另外,还有一个替代方案,即使用`TYPE_TOAST`类型的窗口,但这种类型的窗口不能...

    Android 悬浮Activity ( Dialog风格)

    同时,为了使Activity浮现在屏幕上方,需要设置窗口类型(Window Type)为`TYPE_PHONE`或`TYPE_SYSTEM_ALERT`。 ```xml &lt;style name="AppTheme.FloatActivity" parent="Theme.AppCompat.Dialog"&gt; &lt;!-- Customize...

    Android 8.0如何完美适配全局dialog悬浮窗弹出

    Android官方修订记录指出,为了防止后台应用在前台应用之上显示弹窗,影响用户体验,从8.0开始,需要使用 `WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY` 类型来设置Dialog的窗口类型。这样,即使在后台,...

    Android在surfaceview中显示Dialog和Toast

    2. **调整Dialog层级**:通过`WindowManager.LayoutParams`的`type`属性,将`Dialog`的层级设置得比`SurfaceView`更高,例如设置为`LayoutParams.TYPE_SYSTEM_ALERT`或`LayoutParams.TYPE_PHONE`。 3. **处理触摸...

    android视频播放浮动窗口对话框

    在Android中,这主要通过`TYPE_SYSTEM_ALERT`类型的Window来完成。此类窗口层级高于普通的Activity,但低于系统通知,可以覆盖在其他应用之上。要创建这样的窗口,我们需要在AndroidManifest.xml中为对应的Activity...

    android 来电去电 通话 弹出对话框显示号码信息

    同时,对于对话框的位置和显示效果,可以使用WindowManager.LayoutParams来调整,例如设置LayoutParams的type为TYPE_SYSTEM_ALERT,使其能够在其他应用之上显示。 6. **测试与兼容性**:描述中提到该示例在Android ...

    Android应用源码之应用悬浮图标显示.zip

    首先,浮动窗口在Android中通常被称为系统级对话框或者服务层窗口(System-level Dialog or Service Window),它能够在其他应用之上显示内容。在Android API中,我们主要通过`android.view.WindowManager`接口和`...

    android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手.zip

    其中,类型应设置为`TYPE_SYSTEM_ALERT`,表示系统提示窗口。 三、悬浮窗的显示与隐藏 1. 显示悬浮窗:使用WindowManager服务的`addView()`方法添加悬浮窗到屏幕。传入自定义View和LayoutParams对象。 2. 隐藏悬浮...

    android悬浮窗demo

    首先实例化`WindowManager.LayoutParams`,设置其类型为`LayoutParams.TYPE_SYSTEM_ALERT`或`LayoutParams.TYPE_PHONE`,以便在所有应用之上显示。接着,通过`WindowManager`的`addView()`方法将悬浮窗添加到屏幕上...

    Android浮窗实例

    浮窗类型通常设置为`TYPE_PHONE`或`TYPE_SYSTEM_ALERT`,前者在所有应用之上,后者则在系统对话框之下,但高于其他应用。 接下来,我们可以通过`WindowManager`的`addView`方法将浮窗添加到屏幕上。同时,为了实现...

    Android高级应用源码-来电弹屏实例代码,带关闭按钮.zip

    首先,我们需要创建一个`LayoutParams`对象,设置其类型为`TYPE_SYSTEM_ALERT`或`TYPE_PHONE`,以便在其他应用之上显示。 3. **自定义对话框(Custom Dialog)**:`TestTopViewDialog`可能是一个自定义对话框类,...

    FloatWindowDemo

    开发者需要在`LayoutParams`中设置窗口类型为`TYPE_PHONE`或`TYPE_SYSTEM_ALERT`,以便使悬浮窗在所有应用之上显示。此外,还需要确保应用具有`SYSTEM_ALERT_WINDOW`权限,否则无法正常运行悬浮窗。 在`...

    浅析Android Service中实现弹出对话框的坑

    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); } dialog.show();` 二、权限问题 在 Android 6.0 及更高版本中,Service 中弹出的对话框需要申请悬浮窗权限。我们可以使用以下...

    WindowTest3_done.zip

    例如,对于悬浮窗,通常需要设置为`TYPE_PHONE`或`TYPE_SYSTEM_ALERT`类型的Window。 3. **添加视图**:使用`WindowManager`的`addView()`方法将View添加到Window上。`WindowManager`可以通过Context的`...

    悬浮窗口显示

    在Android开发中,"悬浮窗口显示"是一种常见的需求,它可以让应用在主屏幕或其他应用之上显示一个小窗口,提供快捷操作或信息展示。本教程将详细讲解如何在Android中实现一个简单的悬浮窗口,并解决点击窗口外部时...

    windowmanager对话框

    当涉及到Android 6.0及更高版本的权限管理时,你需要检查应用是否已经获得了WRITE_SETTINGS权限,因为显示SYSTEM_ALERT_WINDOW类型的对话框需要这个权限。在运行时检查权限的代码如下: ```java if (Build.VERSION....

    Android仿360悬浮小球自定义view实现示例

    在`showWindow()`方法中,我们需要初始化`WindowManager.LayoutParams`对象`mParams`,设置其类型为`TYPE_SYSTEM_ALERT`,以创建一个系统级别的悬浮窗。此外,还需要设置悬浮窗的宽高、位置等属性。例如: ```java ...

    Android中wifi与数据流量的切换监听详解

    dialog.getWindow().setType WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); dialog.show(); } ``` 在`onClick()`回调中,我们可以调用自定义的`controlNetWork()`方法来实际执行网络切换操作。需要注意的是,...

    android 问题总结

    - **类型设置**:使用`getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)`可以将对话框设置为系统级别的弹窗,这对于提示用户重要的系统信息非常有用。 #### 八、WakeLock与AlarmManager的使用 ...

Global site tag (gtag.js) - Google Analytics