android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?

Posted

技术标签:

【中文标题】android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?【英文标题】:android - how to play a mp3 file from file manager in my music player? 【发布时间】:2016-01-02 15:23:27 【问题描述】:

我在 android studio 中创建了一个音乐播放器应用。当我运行它时,没有问题并且应用程序运行良好,但是当我尝试从文件管理器播放歌曲时,应用程序选择弹出窗口会显示我的应用程序。当我选择我的音乐播放器时,它会打开音乐播放器但不播放歌曲。只显示最后播放的歌曲。如何自动播放所选歌曲?我需要捕捉任何意图吗?

AndroidManifest.xml

<activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="content"/>
            <data android:scheme="file"/>
            <data android:mimeType="audio/*"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

MainActivity.java

public void onCreate(Bundle savedInstanceState) 

    sMainActivity = this;
    action = getIntent().getAction();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    navigationMap.put(Constants.NAVIGATE_LIBRARY, navigateLibrary);
    navigationMap.put(Constants.NAVIGATE_PLAYLIST, navigatePlaylist);
    navigationMap.put(Constants.NAVIGATE_QUEUE, navigateQueue);
    navigationMap.put(Constants.NAVIGATE_NOWPLAYING, navigateNowplaying);
    navigationMap.put(Constants.NAVIGATE_ALBUM, navigateAlbum);
    navigationMap.put(Constants.NAVIGATE_ARTIST, navigateArtist);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    panelLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);

    navigationView = (NavigationView) findViewById(R.id.nav_view);
    View header = navigationView.inflateHeaderView(R.layout.nav_header);

    albumart = (ImageView) header.findViewById(R.id.album_art);
    songtitle = (TextView) header.findViewById(R.id.song_title);
    songartist = (TextView) header.findViewById(R.id.song_artist);

    setPanelSlideListeners(panelLayout);

    navDrawerRunnable.postDelayed(new Runnable() 
        @Override
        public void run() 
            setupDrawerContent(navigationView);
            setupNavigationIcons(navigationView);
        
    , 700);


    if (RamUtils.isMarshmallow()) 
        checkPermissionAndThenLoad();
     else 
        loadEverything();
    

    addBackstackListener();

【问题讨论】:

你能提供代码吗? @Ben_Gratvol 请检查代码 【参考方案1】:

如何自动播放所选歌曲?

如果您的应用显示在选择器中,您必须正确设置&lt;intent-filter&gt;

然后,您需要做的就是从onCreate() 调用getIntent().getData()(也可能是onNewIntent(),具体取决于您在清单中处理任务的方式)。这将为您提供内容的Uri,它与您在&lt;intent-filter&gt; 中的&lt;data&gt; 元素中输入的规范相匹配。然后,您可以使用现有的音乐播放逻辑播放该内容。

【讨论】:

以上是关于android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何在应用程序内保持音乐播放?

如何确保我的应用在平板电脑商店中显示

如何将消息发送到 Android 中的其他应用程序?

活动在前台时如何在 Android 上播放音乐

我想在我的 Android 游戏中播放音乐以及分析声音数据。使用 Unity C#

如何在 Android Studio 中创建迷你音乐播放器(Activity 或 Fragment 等)