Android:注册App作为接收者

时间:2013-10-11 12:23:15

标签: android

我希望我的应用能够从android-explorer接收图片/音频文件等。 诸如应用,环聊,gmail等应用已经注册。如何将我的应用程序添加为接收器?

我不确定我应该寻找什么。 感谢任何提示:)

2 个答案:

答案 0 :(得分:2)

您的<activity>需要适当的<intent-filter>,理想情况下会对MIME类型进行过滤。

例如,AOSP音乐应用中的这组<intent-filter>元素允许它在各种音频文件类型,文件,HTTP流和ACTION_VIEW流上响应ContentProvider

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="file"/>
            <data android:mimeType="audio/*"/>
            <data android:mimeType="application/ogg"/>
            <data android:mimeType="application/x-ogg"/>
            <data android:mimeType="application/itunes"/>
        </intent-filter>
        <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="http" />
            <data android:mimeType="audio/*"/>
            <data android:mimeType="application/ogg"/>
            <data android:mimeType="application/x-ogg"/>
            <data android:mimeType="application/itunes"/>
        </intent-filter>
        <intent-filter
            android:priority="-1">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="content" />
            <data android:mimeType="audio/*"/>
            <data android:mimeType="application/ogg"/>
            <data android:mimeType="application/x-ogg"/>
            <data android:mimeType="application/itunes"/>
        </intent-filter>

答案 1 :(得分:0)

尽管CommonsWare的答案很好,但我想补充一些可能对其他人有用的信息。实际上,我花了好几年才终于找到答案...

在文件管理器中选择音频文件时,我的应用程序应列为“打开方式”。

虽然这不起作用(例如以上答案):

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

,这个有效:

            <intent-filter tools:ignore="AppLinkUrlError">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="audio/*" />
        </intent-filter>

。为什么?无论出于何种原因,“ android:scheme”似乎都是罪魁祸首。但是删除该行会在IDE中导致严重的错误消息,必须使用“ ignore AppLinkUrlError”子句将其删除。

但是,我没有测试上面提到的其他“方案”,所以也许还有另一种解决方案,但是我的看起来至少很紧凑。

现在的问题仍然是,当出现“打开方式”对话框时,为什么我的应用程序图标与其他图标相比如此丑陋……