【问题标题】:Broadcast Receiver ACTION_SEND does not show up广播接收器 ACTION_SEND 未显示
【发布时间】:2012-10-15 18:28:31
【问题描述】:

我想为使用 ACTION_SEND 类型的“隐式意图”使用广播接收器。

它仍然非常基本,但无论如何我的应用程序/接收器已经没有出现,无论我尝试哪个应用程序的“共享菜单”。

摘自 AndroidManifest.xml:

        <receiver
        android:name=".SaveReceiver" >
        <intent-filter
            android:icon="@drawable/ic_launcher"
            android:label="YourDrive" >
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />

        </intent-filter>
        <intent-filter
            android:icon="@drawable/ic_launcher"
            android:label="YourDrive" >
            <action android:name="android.intent.action.SEND_MULTIPLE" />
        </intent-filter>
    </receiver>

我尝试设置 mimeType,但没有任何帮助。我是否必须设置特定的 mimeType 或者我可以稍后检查它(在处理内容时通过 Java 代码)?我做错了什么,所以我的应用没有出现在所有应用的“共享菜单”中......

提前致谢。

【问题讨论】:

    标签: android android-intent broadcastreceiver android-manifest


    【解决方案1】:

    我想为使用 ACTION_SEND 类型的“隐式意图”使用广播接收器。

    ACTION_SEND 是一个活动动作,而不是广播动作。您无法使用BroadcastReceiver 接听startActivity() 电话。

    我做错了什么,以至于我的应用没有出现在所有应用的“共享菜单”中...

    您没有实施活动。

    http://developer.android.com/training/sharing/receive.html

    【讨论】:

    • 嗯,这很糟糕,我认为......它严重限制了用例的数量。分享内容时,您并不总是想开始活动。
    • @PaulPraet:“您并不总是希望在共享某些内容时开始活动”——当今使用的绝大多数“共享”场景都涉及用户提供有关共享操作的附加信息。诸如收件人地址、文件夹、标签等之类的东西,取决于执行发送的应用程序需要什么。话虽如此,欢迎您创建一个处理共享操作的Theme.NoDisplay 活动。
    • 是的,看来我必须这样做,但我认为这是一种黑客/解决方法。即使大多数应用程序确实会使用活动,我只是不明白为什么Android禁止以另一种方式这样做..
    • @PaulPraet:Intent 消息总线运行三个独立的通道,因此startActivity()ACTION_SEND(记录的模式)不能触发服务或BroadcastReceiver。隐式Intent 操作不适用于服务(用户无法选择)或广播(所有接收者都接收广播)。欢迎您设计您自己的、更灵活的“共享”系统,该系统可能会围绕当前系统,并说服全世界的 Android 开发人员支持您的系统。
    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多