标签: android-windowmanager

关于在三星Galaxy S上调度'Down'键的"Window Manager Crash"


我正在使用Instrumentation在各种Android设备上运行我的单元测试.测试用例在仿真器和除三星Galaxy S之外的所有设备上都能正常工作.在三星Galaxy S上,使用检测注入大约30个关键事件后,它会显示一个Window Manager崩溃,这是完整的崩溃日志:

D/dalvikvm(11862): GC_EXPLICIT freed 6800 objects / 374040 bytes in 54ms
D/dalvikvm(11862): GC_EXPLICIT freed 780 objects / 71856 bytes in 39ms
W/dalvikvm(11862): threadid=9: thread exiting with uncaught exception (group=0x4001d7d0)
E/WindowManager( 2472): Window Manager Crash
E/WindowManager( 2472): java.lang.NullPointerException
E/WindowManager( 2472):         at com.android.server.WindowManagerService$KeyWaiter.waitForNextEventTarget(WindowManagerService.java:5844)
E/WindowManager( 2472):         at com.android.server.WindowManagerService.injectKeyEvent(WindowManagerService.java:5565)
E/WindowManager( 2472):         at android.view.IWindowManager$Stub.onTransact(IWindowManager.java:110)
E/WindowManager( 2472):         at com.android.server.WindowManagerService.onTransact(WindowManagerService.java:692)
E/WindowManager( 2472):         at android.os.Binder.execTransact(Binder.java:288)
E/WindowManager( 2472):         at dalvik.system.NativeStart.run(Native Method)
E/AndroidRuntime(11862): FATAL EXCEPTION: Instr: com.myapp.test.ImpInstrumentation
E/AndroidRuntime(11862): java.lang.NullPointerException …
Run Code Online (Sandbox Code Playgroud)

instrumentation android android-windowmanager samsung-mobile

6
推荐指数
1
解决办法
939
查看次数

手机锁定时启动外部活动

我希望能够在设备密码锁定时启动不属于我的应用程序的活动.如果可能的话,我怎么能这样做呢?

注:我很清楚推杆getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);onCreate我的活动.但是,这不起作用,因为我没有开始自己的活动,而是在我的应用程序之外的第三方活动.

android lockscreen android-windowmanager

6
推荐指数
1
解决办法
1450
查看次数

在Android 4.2.2中将screenBrightness属性设置为0.0f不再关闭屏幕?

这是相关的代码:

 WindowManager.LayoutParams windowParams = getWindow().getAttributes();
 windowParams.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
 windowParams.screenBrightness = 0.0f;
 getWindow().setAttributes(windowParams);
Run Code Online (Sandbox Code Playgroud)

我也尝试将screenBrightness设置为0(整数而不是浮点数),以及我在Stack Overflow答案中找到的以下行:

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

没有骰子.屏幕变暗,但不会关闭.以上代码适用于以前的Android版本.我只是在模拟器中测试它以确保.是否实施了一种控制屏幕的新方法?

android screen-brightness android-windowmanager

6
推荐指数
1
解决办法
1123
查看次数

在Android 4.4(KitKat)中叠加全屏透明图层

我想在整个屏幕上叠加透明视图,包括Android 4.4中最底部的导航栏.

我可以在Android 4.3中通过将窗口管理器LayoutParams定义为TYPE_SYSTEM_OVERLAY来实现,但是当我使用相同的定义时,布局现在被推到导航栏后面.如果由于KitKat最近的更新,请你告诉我吗?或者如果有人有解决方案,请与我分享.

问候

android view relativelayout layoutparams android-windowmanager

6
推荐指数
0
解决办法
635
查看次数

在Android中用户检测锁屏错误密码

我正在构建一个安全应用程序,我需要知道用户是否提供了错误的密码.假设用户手机被模式锁定系统锁定,不幸的是用户忘记了模式密码.当用户5次错误模式时,将被罚30秒.我需要抓住那个点球赛事.在我的应用程序中,我甚至需要做一些任务(为了用户的安全).请帮我,

android android-service android-windowmanager screen-lock android-broadcast

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

android:fitsSystemWindows ="true"在使用DrawerLayout和沉浸式模式时存在问题

试图用身临其境的方式,使用时碰到的问题android:fitsSystemWindows="true"DrawerLayout.我必须将此设置为true,以便将DrawerLayout工具栏约束到系统栏.

问题是,我有一个Fragment将应用程序设置为沉浸式模式.这使得应用程序执行此操作: 全屏与系统栏

我所知道的是一个已知的问题android:fitsSystemWindows="true".我将其设置为false,沉浸式模式运行良好,但工具栏和布局的其余部分不再受制于系统栏.我尝试在运行时设置值,布局的下半部分(也就是导航栏区域)由我的布局填充,但系统栏区域仍然显示: 带状态栏的全屏

这是我的代码:

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

ClockFragment.java - 隐藏和显示

private void hideSystemUI() {
    if (Build.VERSION.SDK_INT >= 14) {
        getActivity().findViewById(R.id.drawer_layout).setFitsSystemWindows(false);
    }
    getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    if (Build.VERSION.SDK_INT >= 19) {
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);
    } else if (Build.VERSION.SDK_INT >= …
Run Code Online (Sandbox Code Playgroud)

android android-windowmanager navigation-drawer android-immersive

6
推荐指数
1
解决办法
5633
查看次数

如何从信使聊天头服务等服务中检测后门按钮/主页按键?

我一直在查看几个stackoverflow问题,以了解如何使用Windows管理器监听服务上的backpress按钮.大多数答案提出这是不可能的,但我可以看到信使处理得很好.

messenger如何处理它的聊天服务上的背压按钮?(或者我完全错了,他们不是使用Windows管理器的服务?)

service android-windowmanager onbackpressed

6
推荐指数
1
解决办法
950
查看次数

打开OptionsMenu of Activity泄漏设备旋转窗口

试图了解我的Activity中窗口泄漏的原因.该活动扩展了AppCompatActivity.它具有单个视图,其中RecyclerView和ProgressBar在旋转时不可见.

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    if (savedInstanceState != null) {
        chosenSorting = savedInstanceState.getString("sorting");
    }

    mRecyclerView = (RecyclerView) findViewById(R.id.rv_pop_view);
    mLoadingIndicator = (ProgressBar) findViewById(R.id.pb_loading_indicator);
    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
    moviesRecyclerView.setLayoutManager(mLayoutManager);

    mRecyclerView.setHasFixedSize(true);

    if (chosenSorting.equals("")) {
        load("A");
    } else {
        load("B");
    }
}
Run Code Online (Sandbox Code Playgroud)

屏幕旋转一切正常,没有UI问题.但是当OptionsMenu打开时发生旋转时,会出现泄漏窗口:

E/WindowManager: android.view.WindowLeaked: Activity com.example.MainActivity has leaked window android.widget.PopupWindow$PopupDecorView{2aeb62a V.E...... ......ID 0,0-686,336} that was originally added here
                                                                                at android.view.ViewRootImpl.<init>(ViewRootImpl.java:418)
                                                                                at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
                                                                                at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
                                                                                at android.widget.PopupWindow.invokePopup(PopupWindow.java:1378)
                                                                                at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1234)
                                                                                at android.support.v7.widget.AppCompatPopupWindow.showAsDropDown(AppCompatPopupWindow.java:105) …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks screen-rotation options-menu android-windowmanager

6
推荐指数
1
解决办法
238
查看次数

Android Window Manager阻止系统后退键

我有一个像Facebook聊天buble的浮动视图,但与它不同,我的叠加层有一个EditText,需要具有焦点.

这是我的浮动视图代码

        //Inflate the floating view layout we created
        mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_widget_layout, null);

        //Add the view to the window.
        final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                PixelFormat.TRANSLUCENT);

        //Specify the view position
        params.gravity = Gravity.TOP | Gravity.START;        //Initially view will be added to top-left corner
        params.x = 0;
        params.y = 100;

        //Add the view to the window
        mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        mWindowManager.addView(mFloatingView, params);
Run Code Online (Sandbox Code Playgroud)

它几乎是好的,但有一个问题.当我从服务创建叠加时,系统后退按钮不起作用.如果我使用FLAG_NOT_FOCUSABLE系统按钮; 家庭,最近和后面的工作如预期.我在SO做了一些研究,发现这是一个安全问题,所以我开始寻找替代解决方案,然后发现改变了我的代码

// Wrapper for intercepting System/Hardware key events …
Run Code Online (Sandbox Code Playgroud)

android overlay back-button android-windowmanager

6
推荐指数
1
解决办法
782
查看次数

在没有Window的情况下更改状态栏颜色

我想操纵状态栏(ex.color)但在后台.我正在使用前台服务来执行此操作.因此,没有窗口,因为它在后台发生,特别是没有活动.但是,功能

public abstract void setStatusBarColor (int color)
Run Code Online (Sandbox Code Playgroud)

由抽象类Window调用:https://developer.android.com/reference/android/view/Window.html

所以因为它是抽象的我无法启动它而且我不能使用getWindow()因为我没有实现一个活动类.以下答案使用Activity.还有其他方法可以实现吗? 如何更改android中的状态栏颜色

android statusbar android-windowmanager android-statusbar android-window

6
推荐指数
1
解决办法
322
查看次数