0

ユーザーが通知をクリックすると、特定のアクティビティが開かれる 1 つの SDK を実装しています。どうすれば別のアクティビティを意図的に渡すことができるのか疑問に思っています。サンプル コードは次のとおりです。

void fireNotification(Context _context, String appname,
            String appdescription) {

        Intent resultIntent = new Intent(_context, ResultActivity.class);
        try {

            PendingIntent contentIntent = PendingIntent.getActivity(_context,0, resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);

            mBuilder = new NotificationCompat.Builder(_context);
            }

意図的にさまざまなアクティビティを渡す方法を教えてください。

4

3 に答える 3

0

ResultActivity の代わりに別のアクティビティをロードしたいと思います。ResultActivity.class を他のアクティビティのクラス名に変更するだけで済みます。

ユーザーが通知をタップした後にどのアクティビティを読み込むかを決定する機能が必要な場合は、画面を「リダイレクト」するアクティビティのように、起動後にどのアクティビティを読み込むかを決定する新しいアクティビティを作成できます。

于 2013-08-26T05:55:31.077 に答える
0

これを試して..

void fireNotification(Context _context, String appname,
            String appdescription) {

        Intent resultIntent = null;

        if(something)
             resultIntent = new Intent(_context, SomeActivity1.class);
        else
             resultIntent = new Intent(_context, SomeActivity2.class);

        try {

            PendingIntent contentIntent = PendingIntent.getActivity(

            _context,

            0,

            resultIntent,

            PendingIntent.FLAG_UPDATE_CURRENT);

            mBuilder = new NotificationCompat.Builder(

            _context);

}
于 2013-08-26T05:56:56.223 に答える
0

通知を作成するために使用するコードを次に示します。v4 互換ライブラリを使用します。ご覧のとおり、起動するアクティビティを変更する場合は、PentingIntent を再作成する必要があります。私が行ったように、インテントをキャンセルして再発行しても問題はありません。チケットのテキストを許可していない場合、ユーザーはそれに気付かない可能性があります。また、互換性ビルダーを使用するとカスタムビューを割り当てることができることはわかっていますが、これは毎回クラッシュするため、直接割り当てる方が安定しているようです。

public static void setupNotification(Context context) {
    if (mNotificationManager == null) {
        mNotificationManager = (NotificationManager) context.getSystemService(Service.NOTIFICATION_SERVICE);
    }
    mNotificationManager.cancel(R.layout.main);
    int icon = R.drawable.ic_stat_notify_connected;
    String tickerText = context.getString(R.string.TickerText);
    createNotification(context, tickerText, icon);
    mNotificationManager.notify(R.layout.main, mNotification);
}

private static void createNotification(Context context, String tickerText, int icon) {
    Intent notificationIntent = new Intent();
    notificationIntent = new Intent(context, NotificationOptionsActivity.class);

    String contentTitle = context.getString(R.string.MessageTitle);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    if (mNotification == null) {
        mNotification = new NotificationCompat.Builder(context.getApplicationContext()).setContentTitle(contentTitle).setSmallIcon(icon).setContentIntent(contentIntent).build();

        mNotification.flags |= Notification.FLAG_ONGOING_EVENT;

        RemoteViews contentView = new RemoteViews(context.getApplicationContext().getPackageName(), R.layout.notification_custom_layout);
        mNotification.contentView = contentView; 
    } else {
        mNotification.contentIntent = contentIntent;
    }
}

注:Intent.FLAG_ACTIVITY_NEW_TASK他に何も使用しないと機能しません。カスタム ビューがない場合は、カスタム ビューのコードを削除できます。

カスタム ビューがある場合は、次のように値を設定できます。

    mNotification.contentView.setTextViewText(R.id.noti_user, user);
    //default image
    mNotification.contentView.setImageViewResource(R.id.noti_image, R.drawable.ic_user_icon);
于 2013-08-26T05:57:03.273 に答える