如何将数据与通知传递给主要活动

问题描述:

我的android应用使用phonegap 2.5.0。在这个意向启用通知。意图有一些额外的数据。通知代码如下,如何将数据与通知传递给主要活动

Notification notification = new Notification(icon, contentTitle, when); 
// Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 

    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    Intent notificationIntent = new Intent(this, MainActivity.class); 
    notificationIntent.putExtra("notificationType", "updateAvailable"); 
    notificationIntent.putExtra("updateUrl", updateUrl); 
    notificationIntent.putExtra("updateVersion", updateVersion); 
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
int requestID = (int) System.currentTimeMillis(); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, requestID, notificationIntent, 0); 
    //PendingIntent contentIntent = PendingIntent.getActivity(this, requestID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent); 

    NotificationManager nm = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); 
    nm.notify(1, notification); 

上述生成的通知调用了android应用程序的mainactivity。在MainActivity脚本如下,

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.init(); 

    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    String notificationType = intent.getStringExtra("notificationType"); 

    if(extras != null) 
    { 
     if(extras.getString("notificationType").equals("updateAvailable")) 
     { 
      String updateUrl = extras.getString("updateUrl"); 
      String updateVersion = extras.getString("updateVersion"); 
      super.loadUrl("file:///android_asset/www/update.html?updateVersion="+updateVersion+"&updateUrl="+updateUrl); 
     }else 
      startMyApp(); 
    }else 
    { 
     startMyApp(); 
    }   
} 

具有代码来启动应用程序的功能startMyApp(在打开直接使用的应用程序图标的应用程序只调用)。

但代码无法正常工作。应用程序无法正常工作(即,应用程序未在点击应用程序图标时打开)不幸的是停止显示应用程序错误并关闭应用程序如果我从oncreate函数中删除意图接收内容,并且只有从onCreate应用程序调用的startMyApp()函数成功启动。

帮助我传递数据并通知给MainActivity。该startMyApp()的代码如下

public void startMyApp() 
{ 
    super.loadUrl("file:///android_asset/www/dashboard.html"); 
} 

super.loadUrl("file:///android_asset/www/update.html?updateVersion="+updateVersion+"&updateUrl="+updateUrl); 

这是行不通的,因为它会搜索一个文件名为update.html?updateVersion = XXX &器updateURL = xxx和不update.html。

+0

虽然我从应用程序图标打开该应用程序的意图没有触发或启动,只有正常打开。但在那段时间,应用程序无法正常工作。 – Hackableweb 2013-04-04 11:39:37

+0

我试过没有所有参数。但还是不行! – Hackableweb 2013-04-04 11:44:49

+0

从logcat分享错误 – wmfairuz 2013-04-04 11:46:27