Android Intent с явным обработчиком и идентификатором


person erikbwork    schedule 30.08.2011    source источник
comment
Этот ответ может вам помочь: stackoverflow.com/questions/2965109/   -  person Sergey Glotov    schedule 30.08.2011


Ответы (2)


? попробуйте построить намерение следующим образом:

Intent intent = new Intent(getApplicationContext(), LocationEditor.class);
intent.putExtra("Id", id);
startActivity(intent);

в приемной деятельности:

Intent intent = getIntent();
int id = intent.getExtras().getInt("Id");
person Rafael T    schedule 30.08.2011

Делая это...

startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));

... все равно, что просить ОС: «Эй, я хочу, чтобы вы открыли действие, которое обрабатывает этот тип URI и поддерживает действие Intent.ACTION_EDIT».

Затем выбранное действие должно заглянуть внутрь Uri, извлечь идентификатор и обработать его. Итак, если вы хотите запустить действие напрямую, вам просто нужно явно отправить идентификатор этому действию:

Intent intent = new Intent(getBaseContext(),LocationEditorActivity.class);
intent.putExtra("the_id", id);
startActivity(intent);

Затем внутри действия, вместо того, чтобы искать идентификатор внутри данных Uri, вы получаете его из дополнений:

long theId = getIntent().getExtras().getLong("the_id", -1);
person Cristian    schedule 30.08.2011