如何将带有通知的数据传递给主要活动

时间:2013-04-04 11:22:52

标签: android cordova android-notifications

我的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脚本位于下方,

@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函数中删除intent接收内容,并且只是从onCreate应用程序调用的startMyApp()函数成功启动。

帮助我将通知数据传递给MainActivity。 startMyApp()的代码在

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

1 个答案:

答案 0 :(得分:0)

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

这不起作用,因为它会搜索名为update.html的文件?updateVersion = xxx& updateUrl = xxx而不是update.html。