Подтвердить что ты не робот

Android запускает музыкальный плеер, используя намерение

Можно ли открыть музыкальное приложение из моего приложения в Android, или лучше всего написать совершенно новое музыкальное приложение внутри моего. Я бы предпочел использовать их, так как пользователь уже будет им удобен.

4b9b3361

Ответ 1

Я нашел один способ сделать это.

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
intent.setDataAndType(Uri.parse(YOUR_SONG_PATH), "audio/*");  
startActivity(intent);

Ответ 2

Чтобы просто запустить музыкальный проигрыватель, выполните следующие действия:

Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
startActivity(intent);

Ответ 3

           if (Build.VERSION.SDK_INT >= 24) {
                try {
                    Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
                    m.invoke(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            Intent intent = new Intent();
            intent.setAction(android.content.Intent.ACTION_VIEW);
            File file = new File(YOUR_SONG_URI);
            intent.setDataAndType(Uri.fromFile(file), "audio/*");
            startActivity(intent);

Ответ 4

Существует несколько способов, с помощью которых вы можете достичь проигрывателя по умолчанию, но это специфические для устройства и ОС.

С помощью этого фрагмента кода вы можете получить проигрыватель по умолчанию.

try
    {
    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
    File file = new File("audiofilepath"); 
    String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
    String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    myIntent.setDataAndType(Uri.fromFile(file),mimetype);
    startActivity(myIntent);
    }
    catch (Exception e) 
    {
         e.printStackTrace();
    }

Ответ 5

Вы также можете попробовать это.

Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Ответ 6

Это работает для более старых версий, и вы можете получить исключение FileUriExposed из-за обновления безопасности в последних версиях. Чтобы избежать этого, используйте следующий код

 try{
        File file = new File(filepath);
        String mimeType = "audio/*";
        Uri fileURI = FileProvider.getUriForFile(
                getApplicationContext(),
                getApplicationContext()
                        .getPackageName() + ".provider", file);
        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setDataAndType(fileURI, mimeType);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);
    }catch (Exception e){
        Log.e(TAG,"-------------------------------------------------------FAILED TO PLAY SONG "+e);
    }

Добавьте следующее в AndroidManifest.xml

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
</provider>

Создайте файл provider_paths.xml в разделе res/xml/.

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="external_files"
    path="."/>
</paths>