В моем приложении у меня есть пункт меню, который я хочу открыть предпочтительным медиаплееру пользователя, который интересуется только аудио. В идеале, в первый раз, когда пользователь выбирает этот элемент, он выбирает единственный медиаплеер на телефоне, если у него только один установлен, или представить их со списком, если у них более одного. Тогда я бы сэкономил на своем выборе, поэтому в следующий раз он откроет этот.Как получить список установленных медиаплееров
Как я понимаю, у Android нет медиаплеера по умолчанию. У меня есть оригинальный Droid, и у него есть медиаплеер, но я понимаю, что другие операторы используют свои собственные, или пользователь может удалить стандартный.
Я пробовал несколько вещей, но не могу ничего сработать.
Я пробовал этот код, который должен получить список пакетов, которые поддерживают намерение. Он работает для некоторых вещей, таких как «application/pdf» и «video/*». Когда я пытаюсь сделать это с помощью «audio/*», я получаю пустой список, хотя у меня есть и Android-плеер 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);
Единственное, что я могу думать, чтобы сделать, это выйти и получить имена пакетов из самых популярных медиаплееров и жесткий код их и искать телефон, чтобы увидеть, какие установлены те, но это Безразлично» t похоже на лучший подход. Я не понимаю, почему первый бит кода не работает. Возможно, фильтры намерений неправильно настроены для этих приложений, или я использую неправильные типы кода или mime.
Второй бит кода делает именно то, что я хочу при запуске деятельности. Он представляет мне список приложений на моем телефоне, которые могут справиться с намерением. Я просто не могу найти способ создать этот список самостоятельно, чтобы я мог манипулировать вещами. Я не хочу начинать работу, просто получаю все данные, которые ОС использует для создания этого списка. – Bob
OK Я думаю, что у меня это работает. Я отправлю решение, когда получу его. – Bob
Это может также работать для вас: http://stackoverflow.com/questions/18161237/list-installed-media-players-android/21658150#21658150 – yado