-1

То, что я пытаюсь сделать, - отправить уведомление на ношение с помощью PendingIntent, чтобы открыть простую операцию, в которой TextView задается с помощью Intents Extra (String). Проблема в том, что Экстра кажется пустым.Android Wear Intent Extras Empty

Вот мой код для MainActivity:

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()); 
      } 
     }); 
    } 
.... 
} 

и для деятельности, которая началась в Intent:

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); 
    } 
} 
} 

ответ

4

При использовании PendingIntent.getActivity(MainActivity.this, 0, viewIntent, 0) (в частности, 0 в качестве последнего параметра), дополнения не заменяются на PendingIntent overview:

Beca использование этого поведения важно знать, когда два намерения считаются одинаковыми для целей получения PendingIntent. Обычная ошибка, которую делают люди, заключается в создании нескольких объектов PendingIntent с Intents, которые изменяются только в их «лишнем» содержимом, ожидая, что каждый раз будет получать другой PendingIntent. Этого не происходит. Части намерения, которые используются для сопоставления, являются теми же, что определены Intent.filterEquals. Если вы используете два объекта Intent, которые эквивалентны по Intent.filterEquals, вы получите тот же PendingIntent для обоих из них.

Они вдаваться в подробности о том, как с ними бороться, хотя наиболее распространенным решением является заменить вызов с:

PendingIntent.getActivity(MainActivity.this, 0, viewIntent, 
    PendingIntent.FLAG_UPDATE_CURRENT) 

Где FLAG_UPDATE_CURRENT означает, что система должна обновлять массовку в PendingIntent.

 Смежные вопросы

  • Нет связанных вопросов^_^