如何在android中添加和检索来自intent的数据

时间:2015-04-03 11:32:05

标签: java android android-intent

我试图在Android中实现推送通知,下面是我的receiver代码

public class MessageReceiver extends BroadcastReceiver {
    public void onReceive(Context ctx, Intent intent) {
        Intent myIntent = new Intent(ctx, MainActivity.class);
        myIntent.putExtra("skipList", true);
        PendingIntent pendingIntent = PendingIntent.getActivity(
                ctx, 0, myIntent, 0);
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(ctx)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setContentTitle(intent.getExtras().getString("subject"))
                        .setContentText(intent.getExtras().getString("cover"))
                        .setContentIntent(pendingIntent);
        mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
        NotificationManager mNotificationManager = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1, mBuilder.build());
    }
}

因此,从上面的代码我将数据skipList = True添加到intent myIntent

我只想在我的MainActivity.java文件中检索此数据,如下所示

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

            Intent iin= getIntent();
            Log.v("<<<<<<<<<<<<iiiiiiiii>>>>>>>>>>>>>>>>",iin.toString());
            Bundle b = iin.getExtras();
            Log.v("<<<<<<<<<<<<bbbbbbbb>>>>>>>>>>>>>>>>",b.toString());
            String wow = b.getString("skipList");
            Log.v("<<<<<<<<<<<<wowowowoow>>>>>>>>>>>>>>>>",wow.toString());
}

但是我无法从意图中获取数据我做错了什么?

5 个答案:

答案 0 :(得分:1)

您正在使用带有布尔参数的putExtra,但您将其作为String检索。 您需要使用getBooleanExtra()方法获取它。 只需替换此行:

String wow = b.getString("skipList");

用这个:

boolean wow = b.getBooleanExtra("skipList");

答案 1 :(得分:0)

您正在boolean中传递putExtra并尝试将其作为字符串检索。

我认为this教程可能对您有所帮助,以获得更多关于您可以用意图做什么的知识

答案 2 :(得分:0)

您正在传递布尔值,因此您应该读取布尔值 使用以下代码

getIntent().getBooleanExtra("skipList", defaultValue);

这可能会对你有帮助。

答案 3 :(得分:0)

在代码中,您通过intent传递布尔数据,但将其作为字符串获取:  试试这个,

   boolean isSkipList = getIntent().getExtras().getBoolean("skipList");

(或)

替换以下行:

  String wow = b.getString("skiplist");

这一行:

  boolean wow = b.getBoolean("skiplist");

答案 4 :(得分:0)

你应该写

 boolean wow = b.getBooleanExtras("skipList");

 myIntent.putExtra("skipList", "true");