2015-01-31 2 views
2

Мой вопрос прост. Возможно ли каким-то образом передать дополнительные данные с Intent.ACTION_GET_CONTENT, который Activity получает Intent в его onActivityResult() может зачитать?Можно ли передавать дополнительные данные с помощью Intent.ACTION_GET_CONTENT

На данный момент я попытался передать некоторые данные с помощью стандартного putExtra(), но эти данные исчезают на пути моей деятельности. Использование следующего кода для настройки намерения.

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("audio/*"); 
intent.putExtra(CURRENT_REQUEST_CODE_TAG, getTargetRequestCode()); 
getActivity().startActivityForResult(intent, ADD_SIGNAL_REQUEST_CODE); 

И, как я уже сказал, дополнительные данные исчезли, когда я получил намерение в своей деятельности. Есть ли способ пометить или настроить намерение, чтобы оно содержало дополнительные данные или что-то еще, что я пропустил?

Если это невозможно, есть ли какой-либо другой способ по умолчанию/стандарту? Заметка. Я бы не хотел использовать для этого «Общие настройки».

Спасибо!

Update

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    int currentRequestCode = data.getIntExtra(CURRENT_REQUEST_CODE_TAG, -1); 
} 

В моей onActivityForResult(), то getIntExtra() всегда возвращает значение по умолчанию, равное -1, а не тот, я настроил мои намерения с, что должно быть значение 9 или 10. Это говорит мне что дополнительные данные были потеряны, а отладка объекта данных подтверждает мои подозрения, аргумент намерения не содержит никаких дополнительных данных.

Кажется, что намерение, которое я отправляю, не то же самое, что получено в моем onActivityResult(). Я понимаю это поведение, потому что в моем случае открывается список файлов Android по умолчанию и позволяет пользователю выбрать файл с правильным типом MIME, и когда пользователь выбирает файл, я предполагаю, что новый Intent создается с URI для выбранного файла, но почему лишние данные исчезают, не следует ли их хранить?

+0

Im любопытно: Вы пробовали настройки действий для общего Intent? Например {Intent intent = new Intent(); intent.setAction (Intent.ACTION_GET_CONTENT); intent.putExtra (...)}, плюс Возможно, вы захотите проверить вопрос # 25622235 – brainovergrow

ответ

0

Привет там попробовать код ниже

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("audio/*"); 
intent.putExtra(CURRENT_REQUEST_CODE_TAG, getTargetRequestCode()); 
startActivityForResult(intent, ADD_SIGNAL_REQUEST_CODE); 

Теперь переопределить метод onActivityResult во фрагменте вы называете приведенный выше код

+0

Попробуйте это, и он не отличается от – Robert

+0

. Можно ли увидеть код в вашем onActivityResult? –

+0

добавлено onActivityResult() и некоторая дополнительная информация. – Robert

1

Я не думаю, что вы можете передать данные в Extras через Intent, что имеет действие как Intent.ACTION_GET_CONTENT. Но вы можете попробовать сделать это что-то вроде этого:

Intent extraIntent = getActivity().getIntent() != null ? getActivity().getIntent().getIntent() : new Intent(); 
    extraIntent.putExtra(EXTRA_PHOTO_LOCATION_ID, loc.getId()); 
    extraIntent.putExtra(CURRENT_REQUEST_CODE_TAG, getTargetRequestCode()); 

    getActivity().setIntent(extraIntent); 
    getActivity().startActivityForResult(intent, ADD_SIGNAL_REQUEST_CODE); 

onActivityResult и вы можете прочитать данные из activity`s Intent:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     int currentRequestCode = getIntent().getIntExtra(CURRENT_REQUEST_CODE_TAG, -1); 
    } 
Смежные вопросы