- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我希望收到推送通知(c2dm)接收显示通知。这个通知开始,连同 PendingIntent,一个显示弹出窗口的 Activity 。单击“确定”按钮时,此弹出窗口会启动我的应用程序。
这是在接收推送通知时执行的代码:
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();
}
}
这是我的 Activity ,显示弹出窗口并启动我的应用程序:
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 > Notification > PendingIntent > DialogActivity > TestC2DMActivity)然后接收下一个推送,通知将正常显示,但单击通知将不会启动 DialogActivity。而当应用程序正常启动(应用程序图标)时,一切正常。
我觉得如果我的应用程序是由我的 PendingIntent 启动的,那么这个 PendingIntent 不再需要启动 DialogActivity .. 为什么??
非常感谢您的帮助,抱歉我的英语不好..
最佳答案
我有解决方案:
intentDialog.setAction("" + Math.random());
getExtra from Intent launched from a pendingIntent
还是谢谢你
关于android - Notification 的 PendingIntent 不要第二次调用我的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320428/
我想了解 PendingIntent.FLAG_NO_CREATE 的行为。我想知道它什么时候返回 null 什么时候不返回。这是事件发生的顺序: alarmIntent = new Intent(c
我正在尝试请求网络,因此我构建了 NetworkRequest 并构建了 PendingIntent, ConnectivityManager conn_manager = (Connectivit
我一直在使用警报管理器。一旦我设置了一个 PendingIntent 来触发警报,我想取消它。 How do I achieve this? 帮助将不胜感激。 最佳答案 下面这几行代码肯定可以帮助您删
我正在尝试在 Android 中创建一个 PendingIntent。这是代码 mNotificationIntent = new Intent(getApplicationContent(), My
我有三个 Activity (Home、Search、Destination),我可以用它们来描述我的用户体验流程。 Home Activity 是我的启动器 Activity ,然后是搜索 Acti
我试图从 API 中了解 PendingIntent 的用途。 有时我使用的一些方法需要这样做,但我仍然没有得到正确的想法。 谁能解释一下吗?为什么我不能只使用上下文? 谢谢 莫希克 最佳答案 Pen
我在 Android 中开发闹钟时遇到问题。当我触发包含必须在计划时间启动的 Activity 的 PendingIntent 时,它运行良好。但是,当闹钟响起并且我按贪睡 5 分钟并使用不同的请求代
我得到了一个 IntentService,它在 onHandleIntent(Intent) 中同步执行一些长时间运行的工作。因此,只要服务运行,我就会显示一个通知。现在我想在用户点击通知后停止服务。
我有这个... button = (Button) findViewById(R.id.start_repeating); button.setOnClickListener(new OnClickL
在我的应用程序中,我有一个显示 2 个选项的对话框:Copy 和 Dismiss 当用户单击 Copy 时,我希望在状态栏中收到通知。 public void showDialog(final Str
我有一个会显示通知的服务。通知显示正确,但当我点击通知时没有任何反应。它应该在我的应用程序中打开一个 Activity 。这是我的代码: public class ServiceCheckExpens
我正在我的游戏中创建一个通知。如果玩家有一段时间没有玩游戏,我想显示通知。我正在使用以下带有警报设置的 PendingIntent 来创建通知。有了这个,我就可以创建通知。 问题:如果玩家玩游戏,我需
所以这段代码是在我的服务开始在前台启动后从内部运行的。这也会创建将留在那里的通知。我有很多问题/疑问: 1) 点击通知只会打开应用信息,不会打开我的 PendingIntent。 2) 未设置我的内容
如何创建多个 PendingIntent?我有几个通知,当用户按下最后一个通知时,一切正常,但点击通知没有响应。我的代码是: Intent notificationIntent = new Inten
我正在运行一项服务,该服务会在特定事件的通知栏上发出通知。在该通知中,我设置了一个 PendingIntent 以启动另一个应用程序。出于某种原因,当我根据通知采取行动时,它不会启动其他应用程序。这是
我有一个名为 sendNotification 的方法,可以多次调用。 private PendingIntent createNotificationIntent(Context context,
我有一个导航应用程序。我想获得可能暂时不会到达的位置信息,具体取决于 GPS 锁定所需的时间——或者接收信号不好时的时间。 我计划使用 LocationManager.requestLocationU
我有一个 Android 库,它有一个创建 Notification 的 Service。据我了解,Notification 必须有一个 contentIntent (PendingIntent) 集
当我们将 0 作为标志传递给 PendingIntent 时,如下所示: PendingIntent pi=PendingIntent.getActivity(this, 1, i, 0); does
我在尝试通过 Intent 和未决 Intent 将数据传递给 BroadcastReceiver 时遇到了一些问题,涉及接近警报。更具体地说,我试图传递一个对象,其中包括用户不断变化的位置。我已经尝
我是一名优秀的程序员,十分优秀!