2

PhonegapのAndroid用localNotificationプラグインを使用して、特定の日付に通知を表示します。

私はCordova[2.2]を使用し、cordovaのアップグレードチュートリアルを使用してプラグインを変更しました。

通知は表示されますが、クリックしてもアプリケーションが開かず、通知がクリアされません。

どうすればこれを修正できますか?

4

1 に答える 1

4

AlarmReceiver.javaの70行目あたりに、次のコード行が表示されます。

    // Construct the notification and notificationManager objects
    final NotificationManager notificationMgr = (NotificationManager) systemService;
    final Notification notification = new Notification(R.drawable.ic_launcher, tickerText,
            System.currentTimeMillis());
    final PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.vibrate = new long[] { 0, 100, 200, 300 };
    notification.setLatestEventInfo(context, notificationTitle, notificationSubText, contentIntent);

以下に一致する適切な行を追加します。

    // Construct the notification and notificationManager objects
    final NotificationManager notificationMgr = (NotificationManager) systemService;
    final Notification notification = new Notification(R.drawable.ic_launcher, tickerText,
            System.currentTimeMillis());
    Intent notificationIntent = new Intent(context, CLASS_TO_OPEN.class);
    final PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.vibrate = new long[] { 0, 100, 200, 300 };
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notification.setLatestEventInfo(context, notificationTitle, notificationSubText, contentIntent);

ここで、CLASS_TO_OPENは、通知が押されたときに開きたいクラスの名前です。

編集:
明確にするために、通知が押されたときにアクティビティを開くには、このアクティビティを通知オブジェクトに関連付ける必要があります。これは、を作成しIntent、開くアクティビティ(NAME_OF_ACTIVITY.classのように)を2番目のパラメーターとして指定し、これIntentPendingIntent3番目のパラメーターとしてに渡すことによって行われます。setLatestEventInfoこれは、メソッドを介して通知オブジェクトに渡されます。

上記のコードスニペットでは、開くアクティビティを指定することを除いて、これはすべてあなたのために行われます。これはプロジェクトに固有のものになるためです。追加のアクティビティを追加しない限り、PhoneGap / Cordovaプロジェクトには1つのアクティビティ、つまり、CordovaWebViewを開くアクティビティが含まれます。プロジェクトでこのアクティビティの名前がわからない、または覚えていない場合は、次のようにしてパッケージエクスプローラー(Eclipse)で見つけることができます。

src> NAME_OF_YOUR_PACKAGE> NameOfActivity.java

これがクラスの名前であることを確認するには、テキストエディタでJavaファイルを開くと、が表示されますNAME_OF_ACTIVITY extends DroidGap。上記のスニペットのCLASS_TO_OPENをアクティビティの名前に置き換えます(.classファイル拡張子を含める必要があります)。

于 2012-12-26T14:26:35.867 に答える