我想在Android的来电屏幕上创建一个自定义弹出窗口,我希望为用户添加信息。 我希望弹出窗口不会禁用后台的任何可点击性,以便用户仍然可以接听电话。
我知道这是可能的,因为许多应用程序都这样做,例如MeZeZe app:
更多信息:
非常感谢任何帮助! 谢谢
答案 0 :(得分:11)
如果您希望保持“受理”活动仍然可以点击,但您的叠加层没有任何控件,则可以通过调用
来执行此操作getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
在通话中显示的活动的onCreate()方法中。
可与此一起使用的布局参数是:
android:windowBackground="@android:color/transparent"
android:windowIsTranslucent="true"
android:windowAnimationStyle="@android:style/Animation.Translucent"
答案 1 :(得分:0)
这对我来说有一些补充:
在BroadcastReceiver中,我在意图中添加了以下行:
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
此外,在我启动PopupWindow活动之前,我添加了大约1.5秒的延迟,以确保它在来电系统屏幕之后。
在Manifest文件中我添加了:
<activity android:name=".PopUpIncomingCallActivity"
android:theme="@android:style/Theme.Translucent">
</activity>
确保弹出屏幕的布局是半透明的。
在Popupscreen布局xml文件中,我添加了以下属性:
android:windowAnimationStyle="@android:style/Animation.Translucent"
android:windowBackground="@android:color/transparent"
android:windowIsTranslucent="true"
然而,这个解决方案仍有一个缺点:
弹出屏幕出现在来电系统屏幕上方,因此用户必须执行操作(例如单击按钮,按键或触摸屏幕)以关闭弹出屏幕,因为来电屏幕仍在下方并且在弹出屏幕关闭之前无法访问。
答案 2 :(得分:0)
它不仅会在锁定屏幕上显示活动,还会允许您在活动屏幕后面接听来电。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
win.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
setContentView(R.layout.activity_main);