Android Wear Intent附加组件为空

Android Wear Intent附加组件为空,android,android-intent,android-notifications,android-pendingintent,wear-os,Android,Android Intent,Android Notifications,Android Pendingintent,Wear Os,我试图做的是发送一个通知,让它与PendingEvent一起佩戴,以打开一个简单的活动,其中TextView由一个Intents Extra(字符串)设置。问题是,临时演员似乎是空的 以下是我的主要活动代码: public class MainActivity extends ActionBarActivity { public static final String KEY = "eu.paliga.creatinganotification.Key"; public sta

我试图做的是发送一个通知,让它与PendingEvent一起佩戴,以打开一个简单的活动,其中TextView由一个Intents Extra(字符串)设置。问题是,临时演员似乎是空的

以下是我的主要活动代码:

public class MainActivity extends ActionBarActivity {

    public static final String KEY = "eu.paliga.creatinganotification.Key";
    public static final String MSG = "welcome back";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent viewIntent = new Intent(MainActivity.this, ViewEventActivity.class);
                viewIntent.putExtra(KEY, MSG);

                PendingIntent viewPendingIntent = PendingIntent.getActivity(MainActivity.this, 0, viewIntent, 0);

                NotificationCompat.Builder notificationBuilder =
                        new NotificationCompat.Builder(MainActivity.this)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setContentTitle("trying")
                        .setContentText("to figure it out")
                        .setContentIntent(viewPendingIntent);

                 NotificationManagerCompat notificationManager =
                        NotificationManagerCompat.from(MainActivity.this);

                notificationManager.notify(0, notificationBuilder.build());
            }
        });
    }
....
}
对于由意图启动的活动:

public class ViewEventActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_viewintent);
    Intent intent = getIntent();
    if (intent.hasExtra(MainActivity.KEY)) {
        String msg = intent.getStringExtra(MainActivity.KEY);
        Log.d("MyTag", msg);
        ((TextView)findViewById(R.id.textView2)).setText(msg);
    }
}
}

当您使用
pendingent.getActivity(MainActivity.this,0,viewIntent,0)
(特别是
0
作为最后一个参数)时,不会根据以下条件替换额外的:

由于这种行为,为了检索PendingEvent,了解两个意图何时被认为是相同的非常重要。人们常犯的一个错误是创建多个PendingEvent对象,其意图仅在“额外”内容上有所不同,期望每次都获得不同的PendingEvent。这种情况不会发生。用于匹配的意图部分与定义的相同。如果使用两个根据等效的意图对象,则两个对象将获得相同的pendingent

他们详细介绍了如何处理这些问题,尽管最常见的解决方案是将您的电话替换为:

PendingIntent.getActivity(MainActivity.this, 0, viewIntent,
    PendingIntent.FLAG_UPDATE_CURRENT)
其中表示系统应更新PendingEvent中的extras