首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GCM onMessageReceived上显示警报对话框?

在GCM onMessageReceived上显示警报对话框?
EN

Stack Overflow用户
提问于 2015-10-19 14:40:05
回答 2查看 1.8K关注 0票数 0

我在我的Android应用程序中使用GCM。要接收消息,我执行以下操作:

代码语言:javascript
复制
public class MyGcmListenerService extends GcmListenerService {

  @Override
  public void onMessageReceived(String from, Bundle data) {
    Intent dialogIntent = new Intent(this, DialogActivity.class);
    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    dialogIntent.putExtra(DialogActivity.TITLE, title);
    dialogIntent.putExtra(DialogActivity.MESSAGE, message);
    startActivity(dialogIntent);
  }

}

当我运行上面的代码时,我会得到以下错误:

代码语言:javascript
复制
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime: FATAL EXCEPTION: main
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{de.majestella/de.majestella.gcm.DialogActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:134)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4867)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:  Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:275)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.Activity.requestWindowFeature(Activity.java:3264)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at de.majestella.gcm.DialogActivity.onCreate(DialogActivity.java:24)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5047)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:134) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4867) 
10-19 17:08:48.446 8657-8657/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 

如果应用程序在前台,如何在调用onMessageReceived() 时显示警报对话框?

EN

Stack Overflow用户

回答已采纳

发布于 2015-10-19 14:42:01

启动具有对话框主题的活动。

代码语言:javascript
复制
<activity android:theme="@android:style/Theme.Dialog" />

Android Activity as a dialog

您必须在您的所有活动中声明一个广播接收器,并从您的服务中发送一个广播到触发器和活动以显示对话框。

在每个活动的onPause中,停止该活动的广播接收器,然后您就知道只有当您的某个活动处于前台时,您才会收到警报。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33217290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档