Android 通过打开文件启动应用程序

Android 通过打开文件启动应用程序,android,android-intent,Android,Android Intent,我创建了一个音乐播放器,现在我想实现一个功能,如果我点击一个文件,例如Total Commander,它将在我的应用程序中打开。它已经可以在桌面上运行了,但现在我想在Android上实现这个功能 我知道以前一定有人问过,但我找不到答案 我已经发现我需要在AndroidManifest.xml中定义一个意图过滤器: <intent-filter> <action android:name="android.intent.action.VIE

我创建了一个音乐播放器,现在我想实现一个功能,如果我点击一个文件,例如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函数的主要活动。我该怎么处理


谢谢。

您指定的意图过滤器已经朝着正确的方向迈出了一步。 现在,其他类似浏览器的应用程序可以启动你的应用程序。 作为下一步,您需要在activities 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 !
    }
}
首先,您需要捕获其他应用程序调用您的应用程序的意图。意图包含文件的路径作为URI结构。然后,您需要做的唯一一件事就是获取URI字符串并从中获取音乐文件的路径

有关意向筛选的信息可在此处阅读:

请提供一些源代码,否则将很难支持您。我修改了我的问题,将有关意向过滤器的部分包括在内。但是我不知道Java类应该是什么,我已经发布了一个关于如何从你的位置处理这个问题的答案。让我知道这对你是否有用谢谢。这真的很有用。我实现了它,效果很好。不幸的是,只要我的活动正在运行。如果我关闭活动但让服务运行,它将在启动时冻结。如果您知道可能的错误,请查看此主题: