В моем приложении есть пункт меню, в котором я хочу открыть предпочитаемый пользователем медиаплеер, интересующийся только аудио.В идеале, когда пользователь выбирает этот элемент в первый раз, он выбирает единственный медиаплеер на телефоне, если у него установлен только один, или представляет список, если их больше одного.Затем я бы сохранил их выбор, чтобы в следующий раз он открывал его.
Насколько я понимаю, в Android нет медиаплеера по умолчанию.У меня есть оригинальный Droid, и у него есть медиаплеер, но я понимаю, что другие операторы используют свои собственные, или пользователь может удалить стандартный.
Я пробовал несколько вещей, но не могу заставить что-либо работать.
Я попробовал этот код, который должен получить список пакетов, которые поддерживают намерение.Это работает для некоторых вещей, таких как «application / pdf» и «video / *».Когда я пытаюсь сделать это с «audio / *», я получаю пустой список, хотя у меня установлены как стандартный Android-медиаплеер, так и MixZing.Также попробовал его с «media / *» и ничего не получил.
PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("audio/*");
List list = packageManager.queryIntentActivities(testIntent, 0);
Я видел этот код, который работает и открывает аудиофайл с помощью проигрывателя по умолчанию, однако я не хочу открывать файлЯ просто хочу открыть аудио приложение, как если бы пользователь открыл его из ящика приложения.
Intent i = new Intent(Intent.ACTION_VIEW);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
i.setData(u);
startActivity(i);
Единственное, что я могу сделать, это выйти и получить имена пакетов наиболеепопулярные медиаплееры и жестко их кодировать и искать в телефоне, чтобы увидеть, какие из них установлены, но это не лучший подход.Я не понимаю, почему первый бит кода не работает.Возможно, фильтры намерений не установлены должным образом для этих приложений, или я использую неправильный код или типы пантомимы.