1

当应用程序收到推送消息时,我编写了 onMessage 代码以启动 MainActivity,并带有一个弹出消息的警报对话框。到目前为止,一切都很好。

我真正想要的只是弹出窗口!因此,当用户忙于另一个应用程序时,它只会显示一个对话框,其中包含取消或启动应用程序的选项...

GCMIntentService 部分

@Override
    protected void onMessage(Context context, Intent intent) {
        Log.d(TAG, "Received a message");
        String message = intent.getExtras().getString("price");
        displayMessage(context, message);
        generateNotification(context, message);
        //Launch a activity
        Intent i = new Intent();
        i.putExtra("message", message);
        i.setClassName("nl.easy.winkel", "nl.easy.winkel.MainActivity");
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
4

1 回答 1

3

您可以做的一件事是使用本文中定义的方法使MainActivity背景透明(在下面复制以供快速参考),以便用户会觉得弹出窗口超出了她正在使用的当前活动以及用户选择取消时的活动。 .finish()

使活动背景透明:

在您的文件中添加以下样式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>

(值是我放在文件@color/transparent中的颜色值。你也可以在以后的Android版本中使用)#00000000res/values/color.xml@android:color/transparent

然后将样式应用于您的活动,例如:

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
于 2012-11-24T19:31:33.900 回答