【问题标题】:Unable to receive extras in Android Intent无法在 Android Intent 中接收额外内容
【发布时间】:2015-06-08 13:57:47
【问题描述】:

GCMIntTentService.java

if (intent.getStringExtra("request") != null
        && !intent.getStringExtra("request").equalsIgnoreCase("null")){
        String message = intent.getStringExtra("request");
        String cardNo = intent.getStringExtra("requestCardNumber");
        String amount = intent.getStringExtra("requestAmount");
        String cardHoldername = intent.getStringExtra("requestHoldername");
        // This is how to get values from the push message (data)

        long timestamp = intent.getLongExtra("timestamp", -1);

        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        Notification note = new Notification(R.drawable.logofinal,
                "App Notification", System.currentTimeMillis());
        Intent notificationIntent = new Intent(context, Fund_Transfer.class);
        notificationIntent.putExtra("request", message);
        notificationIntent.putExtra("requestCardNumber", cardNo);
        notificationIntent.putExtra("requestAmount", amount);
        notificationIntent.putExtra("requestHoldername", cardHoldername);

        /*
         * notificationIntent.putExtra("mobile", mob);
         * notificationIntent.putExtra("desc", desc);
         * notificationIntent.putExtra("amt", amt);
         */
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                notificationIntent, 0);
        note.setLatestEventInfo(context, "DvPay Notification", message,
                pendingIntent);

        note.defaults |= Notification.DEFAULT_SOUND;
        note.defaults |= Notification.DEFAULT_VIBRATE;
        note.defaults |= Notification.DEFAULT_LIGHTS;
        note.flags |= Notification.FLAG_AUTO_CANCEL;

        sendGCMIntent(context, message,cardNo,amount,cardHoldername);
        notificationManager.notify(0, note);
    }
}

private void sendGCMIntent(Context ctx, String message,String requestCardNumber, String requestAmount, String requestHoldername) {

    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction("GCM_RECEIVED_ACTION");

    broadcastIntent.putExtra("request", message);

    broadcastIntent.putExtra("requestCardNumber", requestCardNumber);
        broadcastIntent.putExtra("requestAmount", requestAmount);
        broadcastIntent.putExtra("requestHoldername", requestHoldername);

    ctx.sendBroadcast(broadcastIntent);
}

Fund_Transfer.java

if(bundle.getString("request")!=null && !bundle.getString("request").equalsIgnoreCase("") && !bundle.getString("request").equalsIgnoreCase("null")){
        String message = bundle.getString("request");
        System.out.println("-------------------Notification message---------"+message);
        String tempCard = bundle.getString("requestCardNumber");
        String name = bundle.getString("requestHoldername");
        String amount = bundle.getString("requestAmount");
        edtamt.setText(amount);
        payeeName.setVisibility(View.VISIBLE);
        cardHolder.setText(name);
        card = tempCard;
        System.out.println("-----------------------------------"+card);
    }

我正在从 GCMIntentService 类中的通知中发送附加信息,但我不明白问题出在哪里。我能够接收名为“请求”的字符串,但无法在我的资金转移类中接收其他字符串。我在调试器中检查了它的值是否正确传递给 Fund_Transfer 类。

【问题讨论】:

标签: android android-intent google-cloud-messaging android-pendingintent


【解决方案1】:

得到我的回答,这条线给我带来了问题

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
            notificationIntent, 0);

改成

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                notificationIntent, PendingIntent.FLAG_ONE_SHOT);

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2022-05-27
    • 2017-12-06
    • 2013-08-04
    • 1970-01-01
    • 2018-03-18
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多