我在后台BroadcastReceiver中管理一些事件。在某些特定情况下,我需要启动一项活动。这个活动应该是隐藏的。不应向用户显示任何内容。
效果很好但是如果用户使用键盘输入内容,则会隐藏键盘。如果用户使用GMail编写电子邮件,则会保存“草稿”。
似乎此活动到达顶部并停止用户正在使用的活动,即使它不可见。有什么方法可以解决这个问题吗?
这是我如何在清单中声明活动:
<activity
android:name=".MyInvisbleActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
这是我启动它的方式:
Intent intent = new Intent(MyContext, MyInvisbleActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyContext.startActivity(intent);
这是MyInvisbleActivity onCreate():
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(---); //This is not used
Window oWindow = getWindow();
oWindow.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
--do work--
}
谢谢!
答案 0 :(得分:0)
Android为此android:theme="@android:style/Theme.NoDisplay"
或者听起来你可能真的想要一个服务。但是您需要提供有关您要实现的目标的更多信息
答案 1 :(得分:-1)
首先,在你的追逐中,我将使用片段而不是空的透明活动,但如果你需要使用一个活动我认为你需要:
在res / values / styles.xml文件中添加以下样式(如果没有,请创建它。)这是一个完整的文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
然后将样式应用于您的活动,例如:
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>