首页 > 解决方案 > 通过文件打开启动应用程序

问题描述

我创建了一个音乐播放器,现在我想实现一个功能,如果我单击一个文件(例如在 Total Commander 中),它将在我的应用程序中打开。它已经在桌面上运行,但现在我想在 Android 中实现这个功能。

我知道以前一定有人问过这个问题,但我找不到答案。

我已经发现我需要在 AndroidManifest.xml 中定义一个意图过滤器:

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="file"/>
            <data android:mimeType="audio/*"/>
        </intent-filter>

我做到了,现在如果我点击一个音乐文件,我的应用程序就会打开(或者我可以选择它)。但现在我也需要在 java 部分做一些事情(我确实相信主要活动 onCreate 函数)。我该如何处理?

谢谢你。

标签: androidandroid-intent

解决方案


您指定的意图过滤器已经朝着正确的方向迈出了一步。现在其他(Explorer-like-)应用程序可以启动您的应用程序。下一步,您需要在活动onCreate(...)函数中接收数据。这可以这样做:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //setContentView(R.layout.main);

    // Get the intent that started this activity
    Intent intent = getIntent();
    Uri data = intent.getData();

    // Figure out what to do based on the intent type
    if (intent.getType().equals("audio")) {
        // Handle intents with audio ...
        String filePath = data.toString();
        // Do some handling here !
    }
}

首先,您需要捕获其他应用程序使用的 Intent 来调用您的应用程序。意图包含文件的路径(作为 URI)结构。然后,您唯一需要做的就是获取 URI 字符串并从中获取音乐文件的路径。

可以在此处阅读有关意图过滤的信息: https ://developer.android.com/training/basics/intents/filters


推荐阅读