通知的 PendingIntent 不要第二次调用我的活动

2024-01-22

我希望接收推送通知(c2dm)接收显示Notification。此通知以 PendingIntent 启动,这是一个显示弹出窗口的活动。单击“确定”按钮时,此弹出窗口将启动我的应用程序。

这是在接收推送通知时执行的代码:

private void dealMessage(Context context, Intent intent)
{       
    try
    {
        String message = intent.getExtras().getString("message");

        Log.v("testc2dm","message :     [" + message + "]");

        //create bean of my Notification
        NotificationPush notif = new NotificationPush();
        notif.init((JSONObject)JSONValue.parse(message));

        //create PendingIntent
        Intent intentDialog = new Intent(context, DialogActivity.class);
        intentDialog.putExtra("notif", notif);
        int requestCode= (int) System.currentTimeMillis();
        PendingIntent pi = PendingIntent.getActivity(context, requestCode, intentDialog, PendingIntent.FLAG_ONE_SHOT);

        //Create the Notification
        Notification n = new Notification();
        n.flags |= Notification.FLAG_SHOW_LIGHTS; // allume l'écran
        n.flags |= Notification.FLAG_AUTO_CANCEL; // fait disparaitre automatiquemet la notif apres un clic dessus
        n.defaults = Notification.DEFAULT_ALL;
        n.icon = R.drawable.icon;
        n.when = System.currentTimeMillis();
        n.setLatestEventInfo(context, "Mon titre", notif.getTitre(), pi);

        //add my Notification
        NotificationManager notificationManager = (NotificationManager)context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(ID_NOTIFICATION, n);
    }
    catch(Exception e)
    {
        Log.e("testc2dm","error :       [" + e.getMessage() + "]");
        e.printStackTrace();
    }
}

这是我的活动,显示弹出窗口并启动我的应用程序:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    Log.v("testc2dm","DialogActivity oncreate()");

    //recovery of my bean Notification
    Intent intentParam = getIntent();
    NotificationPush notif = (NotificationPush)intentParam.getSerializableExtra("notif");

    if(notif != null)
    {           
        Log.v("testc2dm","notif => titre [" + notif.getTitre() + "] -- msg [" + notif.getMessage() + "] -- type [" + notif.getType() + "]");

        //display popup
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(notif.getMessage());
        builder.setTitle(notif.getTitre());
        builder.setCancelable(false);
        builder.setNegativeButton("Ok", new DialogInterface.OnClickListener() 
        {
            public void onClick(DialogInterface dialog, int id) 
            {
                if(!TestC2DMActivity.appIsRunning)
                {
                    //launch first Activity of my application
                    Intent intent = new Intent(DialogActivity.this, TestC2DMActivity.class);
                    startActivity(intent);
                }
            }
        });
        builder.show();
    }
}

我的问题是:如果我的应用程序将通过接收推送来启动(c2dm > 通知 > PendingIntent > DialogActivity > TestC2DMActivity),然后接收下一个推送,通知将显示正常,但单击通知将不会启动 DialogActivity。而当应用程序正常启动时(应用程序的图标),则一切正常。

我觉得如果我的应用程序是由我的 PendingIntent 启动的,那么这个 PendingIntent 不再需要启动 DialogActivity .. 为什么?

真的感谢您的帮助,并为我的英语不好而抱歉。


我有解决方案:

intentDialog.setAction("" + Math.random());

从挂起的 Intent 启动的 Intent getExtra https://stackoverflow.com/questions/2882459/getextra-from-intent-launched-from-a-pendingintent

不管怎样,谢谢你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通知的 PendingIntent 不要第二次调用我的活动 的相关文章

  • 使用WebView登录Twitter

    您好 我使用浏览器完成了 Twitter 登录 Code TwitLoginActivity java 主要活动 package com app twitlogin import twitter4j Twitter import twitt
  • Android:Realm + Retrofit 2 + Gson

    我使用时遇到问题Retrofit Gson and Realm 我知道这三个库的组合存在问题 一些答案建议设置一个ExclusionStrategy for Gson可以解决这个问题 我也尝试过 但是没有成功 我的代码如下所示 public
  • Eclipse图形布局无法显示adView

    我从 Eclipse Helios 更新到 Eclipse Juno 将 Android SDK 工具更新到 v23 以及 Google Play lib 4 4 由于它们 我无法在 Eclipse 图形布局窗口中查看 XML 布局 我收到
  • Android update 17 似乎与外部 Jars 不兼容

    我刚刚允许我的 Mac 对其 Java 安装进行更新 现在我的一些旧罐子 例如javax mail and apache commons httpclient 正在投掷 找不到类 运行时异常 意思是 它们编译得很好 但在运行时崩溃 出现如下
  • 如何在Android中以编程方式设置闹钟?

    以下是我的代码 任何人都可以告诉我为什么它不起作用 我已经从中学到了本教程 http androidgenuine com tag alarmreceiver excellent tutorial 但它不起作用 任何帮助都是可观的 我的代码
  • Android IllegalStateException:无法执行活动的方法

    我是安卓新手 我想做的是当我按下按钮并将字符串写入文本字段时通过网络服务获取字符串 清单 xml
  • 如何使用appium和java在Android中向下滚动以单击元素?

    我想知道如何使用appium和java向下滚动以单击Android中的元素 我里面有一个元素列表 android support v7 widget RecyclerView由于它有10多个元素 所以我们需要滑动屏幕才能看到下面的元素 每个
  • 使用材料设计在工具栏中滑动选项卡

    我一直在学习使用材料设计使用滑动选项卡这个帖子 http www exoguru com android material design navigation android sliding tabs with material desig
  • 规划带有透明覆盖图像的科尔多瓦相机插件

    我正在编写和应用程序 需要在相机上显示透明图像 例如作为构图指南 该应用程序必须至少在 iOS 和 Android 上发布 到目前为止 我已经找到了一个具有功能 iOS 源的插件 okstate plugin camera overlay
  • HttpClient 不在 Galaxy s2 上存储 cookie

    我正在尝试使用此代码从服务器获取数据 DefaultHttpClient httpClient new DefaultHttpClient httpClient getParams setParameter CoreProtocolPNam
  • ViewCompat.setOnApplyWindowInsetsListener使状态栏颜色消失

    这是我用来检测何时的代码Keyboard Height变化 唯一的问题是Statur Bar当此代码运行时 颜色消失并变为白色 ViewCompat setOnApplyWindowInsetsListener this getWindow
  • Android 中 LinkedIn 的 Oauth 2.0 授权

    即使 linkedIn 没有这样的 Android 特定 sdk 例如适用于 android 的 facebook 和 twitter sdk 使用 Oauth 1 0 设置 linkedIn 授权仍然很容易使用 抄写员java https
  • 发送电子邮件到多个地址 Android

    我想选择多个电子邮件地址 然后向所有这些地址发送电子邮件 我的代码如下 emailIntent putExtra android content Intent EXTRA EMAIL new String listofemailaddres
  • 如何将 gradle 项目转换为 android 项目

    我使用 Eclipse ADT 并且通过配置 gt 转换为 gradle 项目将我的 android 项目转换为 gradle 项目 实际上我需要将我的 gradle 项目转换为 android 项目 我怎样才能做到这一点 Eclipse
  • Android 上的推送器

    我正在尝试让 Pusher 在 Android 上运行 这是我的需求 必须支持 私人 频道 必须支持安全连接 必须能够覆盖推送器 身份验证端点 注意 我已经尝试过以下路线 在 WebView 中加载 Pusher js 并让它回退到 Soc
  • Android 前台服务通知未显示

    我正在尝试启动前台服务 我收到服务确实启动的通知 但通知总是被抑制 我仔细检查了应用程序是否允许在我的设备上的应用程序信息中显示通知 这是我的代码 private void showNotification Intent notificat
  • 无法导出已签名的应用程序

    我有一个 Eclipse 工作区 其中包含两个 Android 应用程序和两个 Android 库 Facebook SDK 和我自己的库 当我尝试创建 APK 文件时 我有时收到错误 转换为 dalvik 格式失败 错误 1 我浏览了类似
  • Android GCM SERVICE_NOT_AVAILABLE

    我试图举这个例子 https code google com p gcm source browse git 2Fgcm client https code google com p gcm source browse git 2Fgcm
  • 如何获取android后台运行进程详细信息

    我想列出所有后台运行进程并从一个后台服务 没有 UI 获取这些进程的详细信息 详情如下 1 Name 2 Memory usage 3 Application related to process 4 Files they are acce
  • SQLDroid 和加密数据库

    我的应用程序有一个已经存在的数据库 已经存在 是指我不在我的应用程序中创建数据库 我只是连接到它并读取数据 为了设置连接 我使用 SQLDroid 现在我想知道是否有可能使用 SQLDroid 加密我的数据库 否则我的数据库未加密 任何人都

随机推荐

  • 使用 ES6 装饰器时出现意外的标记“@”

    我有一个 React 项目设置 我正在尝试将 MobX 合并到其中 这样我就必须使用装饰器 即 observable 当我这样做时 我收到以下错误 https github com mobxjs mobx https github com
  • 隐藏 Web API 响应的属性

    我想隐藏Modifiedby Modifieddate and Createddate来自 Web API 响应的属性 我尝试使用 JsonOgnore IgnoreDataMember 但没有工作 ModelMetadataType ty
  • 为什么 Visual Studio 不允许我在 enable_if 中使用模板化的 constexpr 函数?

    因此 我将其归结为最小的 完整的 可验证的示例 并且 Visual Studio 2015 似乎不允许我使用模板化的 constexpr函数在一个enable if 例如 template
  • 使用 AutoFixture 创建递归数据结构的固定装置

    我正在开发一个项目 其中有一些递归数据结构 我想为其创建一个固定装置 数据结构是XmlCommandElement 它有一个单一的方法ToCommand转换XmlCommandElement to Command 树上的每个节点都可以是Xm
  • 如何在迭代字典时从字典中删除项目?

    我可以在迭代 Python 字典时删除其中的项目吗 我想从字典中删除不满足特定条件的元素 而不是创建一个全新的字典 以下是一个好的解决方案 还是有更好的方法 for k v in mydict items if k val del mydi
  • PHP DateInterval 与 DateTime 具有可比性吗?

    我发现 PHP 中的 DateTime 对象可以与另一个对象进行比较 因为 gt 和 和 DateInterval 一样吗 当我试图回答这个问题时 我发现了一些奇怪的事情
  • wx.Python:在多个面板之间传递控制

    我是 wxPython 的新手 并且研究过类似的问题 但无法具体找到我的问题的答案 我正在创建两个带有分离器的面板 每个面板都有许多小部件 我希望一个面板中的小部件控制另一个面板的某些属性 反之亦然 在这个例子中 我试图改变背景RightP
  • ReLU 没有学习处理负输入 Keras / Tensorflow

    我希望我的神经网络将负值转换为正值 理论上 这可以使用 ReLU 函数和 1 个节点来完成 该节点将输入权重学习为 1 因此负输入乘以 1 正输入 它只是继续输出 0 代码如下 我使用 1 作为输入值 看看它是否可以至少在单个输入上进行学习
  • 更改我的项目文件不会更改 Docker 计算机内的文件

    我正在尝试使用 Docker 来改进我的工作流程 我安装了 适用于 Windows 的 Docker 工具箱 https docs docker com engine getstarted step one 在我的 Windows 10 家
  • 在Python中,可以在不使用继承的情况下实现mixin行为吗?

    Python 中是否有一种合理的方法来实现类似于 Ruby 中的 mixin 行为 即不使用继承 class Mixin object def b self print b def c self print c class Foo obje
  • JavaPlot 和 gnuplot

    我正在拼命地努力让 Java 和 gnuplot 更好地发挥作用 我已经开始使用JavaPlot并将 jar 添加到类路径 使用 Eclipse 我还下载了 gnuplot 并将其放在安全的地方 第一个问题 所有例子都由JavaPlot假设
  • boost::filesystem::directory_iterator 是否因删除而失效?

    我正在遍历一个目录 当某个项目符合某些条件时 我将其删除 我可以在循环内安全地执行此操作 还是必须将路径保存在数组中并稍后删除 我没有找到相关信息boost 文件系统文档 http www boost org doc libs 1 52 0
  • PDFBox IOException:文件结尾,预期行

    我目前正在尝试使用 PDFBox 和 Selenium 从已上传并通过链接访问的 PDF 中获取文本 我用这个作为来源 http www seleniumeasy com selenium tutorials how to extract
  • 如何在 Firefox DevTools 中编辑或删除 cookie?

    在 Firebug 中 我可以使用以下命令删除和编辑任何 cookieCookies panel 但在 Firefox DevTools 中我找不到任何删除或编辑 cookie 的方法 我可以在哪里做到这一点 要在 Firefox DevT
  • bash“read -a”在空分隔字符串变量上循环

    我一直在阅读这篇文章 bash for in 在空分隔字符串变量上循环 https stackoverflow com questions 8677546 bash for in looping on null delimited stri
  • 单元测试cherpy web应用程序

    我最近不得不重写我们的 REST API 并从 Flask 切换到 Cherrypy 主要是由于 Python 3 兼容性 但现在我一直在尝试编写单元测试 Flask 有一个非常漂亮的内置测试客户端 您可以使用它向您的应用程序发送虚假请求
  • 未将对象引用设置为对象的实例 #5

    sUsername Trim sPassword Trim string ConnectionString WebConfigurationManager ConnectionStrings dbnameConnectionString C
  • 如何编写Delphi编译时函数

    Delphi 我可以自己写吗compile time functions对于 const 和 var 声明 在编译时可执行 标准 Delphi 库包含 Ord Chr Trunc Round High 等例程 用于常量初始化 我可以编写自己
  • 如何获取 Android 应用程序的 Google Places API 密钥

    在过去的 48 小时里 我绞尽脑汁试图找到这个问题的答案 问这个问题的人 如何为 Google Places api 制作 API KEY https stackoverflow com questions 23128152 how can
  • 通知的 PendingIntent 不要第二次调用我的活动

    我希望接收推送通知 c2dm 接收显示Notification 此通知以 PendingIntent 启动 这是一个显示弹出窗口的活动 单击 确定 按钮时 此弹出窗口将启动我的应用程序 这是在接收推送通知时执行的代码 private voi