我正在为我的 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");
}