活动不会全屏显示

时间:2012-02-20 22:06:42

标签: android android-activity android-intent fullscreen

我在我的项目中定义了一个新的Activity,我在使用fullScreen时遇到了一些问题。

我在清单文件中定义如下:

<activity android:name=".Test"
     android:launchMode="singleInstance" android:screenOrientation="portrait"
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
     .............
>

如果我从另一个活动开始活动,我会得到所需的全屏。问题是当我从BroadcastReceiver启动此活动时 - 我需要在BroadcastReceiver中打开此活动,如下所示:

public void onReceive(Context context, Intent intent) {
     Intent test = new Intent(context, Test.class);
     test.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(test);
}

我也是这样尝试的:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.test);
}

如果活动从我的BroadcastReciever开始,则不会全屏显示。

为什么我这个案子没有全屏?创建活动并可见后,有什么方法可以请求全屏?

1 个答案:

答案 0 :(得分:2)

我喜欢这个问题。有一个方法我省略了添加问题文本 - 我不认为它是相关的。因为我希望这个活动拦截(不要反应)主页按钮按下,因此我重写onAttachedToWindow()方法,如下所示:

public void onAttachedToWindow() {
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}

这就是问题所在。有时候,因此,我的活动没有全屏显示。要解决这个问题,我不知道这是不是最好的方法,我在这段代码中添加了一个延迟,如下所示:

public void onAttachedToWindow() {
    handler.sendEmptyMessageDelayed(100,100);
    super.onAttachedToWindow();
}

和处理程序:

public boolean handleMessage(Message msg) {
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}

这解决了我的问题。我希望这能帮助别人!