我在我的项目中定义了一个新的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开始,则不会全屏显示。
为什么我这个案子没有全屏?创建活动并可见后,有什么方法可以请求全屏?
答案 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);
}
这解决了我的问题。我希望这能帮助别人!