Я бы хотел, чтобы пользователь выбирал аудиофайл, а затем хотел бы получить путь к файлу. Однако у меня есть еще более простая проблема, потому что Uri
намерения я получаю null. Как я мог получить что-то значимое, то есть непустое?Как получить ненулевые данные из намерения при выборе файла?
Начиная Намерение:
private void MainActivity_Click1(object sender, System.EventArgs e)
{
//var intent = new Intent();
var intent = new Intent(Intent.ActionPick, Android.Provider.MediaStore.Audio.Media.ExternalContentUri);
intent.SetType("audio/*");
intent.SetAction(Intent.ActionGetContent);
StartActivityForResult(
Intent.CreateChooser(intent, "Select audio file"), SelectAudioCode);
}
И отвечая на выбор:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok && requestCode==SelectAudioCode)
{
Android.Net.Uri uri = Intent.Data;
audioFileNameText.Text = uri == null ? "<NULL>" : uri.ToString();
}
}
Независимо от того, как я создать intent
(см код выше), я не вижу всегда NULL
.
Update: если я использую Intent
передается через параметр, то Data
свойство этого является null
, а также.
Спасибо, но поскольку я написал - «У меня более простая проблема, Uri - это нуль». То есть как вы написали «Вы можете получить содержимое Uri из data.Data», это еще один шаг для меня, потому что 'data.Data' является« null ». Я не могу обработать его вообще. – greenoldman
Цель, которую вы используете, - это намерение, которое запускает текущую деятельность, но вы можете получить только Uri из намерения, возвращенного Chooser. @greenoldman сожалеет, что не уточнил, что ясно, я обновил свой ответ, чтобы прояснить разницу между намерением текущей деятельности и намерением в «OnActivityResult». –
Спасибо, я также обновлю свой вопрос, я также проверил это «намерение». Его данные также равны null :-( – greenoldman