未收到MEDIA_MOUNTED广播

时间:2011-08-22 03:52:30

标签: android android-manifest android-intent

我很困惑。我正在尝试配置我的应用程序以响应SD卡变为可用/离线,但我的广播接收器永远不会被呼叫!

我可以看到正在播放的活动以及其他应用响应:

08-21 23:43:04.405: DEBUG/Ringer(275): -- intent.getAction() =android.intent.action.MEDIA_MOUNTED

我的清单上有接收者声明:

    <receiver android:name=".Test" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_MOUNTED" />
        </intent-filter>
    </receiver>

我的接收器有一个onReceive方法:

public class Test extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("#########", "##############################################################");
        Log.d("#########", "Obligitory snarky and/or funny logging comment...");
        Log.d("#########", "##############################################################");
    }
}

然而&amp; ^%$'的东西不会导致Test.onReceive()触发。有什么想法吗?

2 个答案:

答案 0 :(得分:40)

你不能认真。显然我需要为数据类型添加一个额外的过滤器。

为“下一个人”留下答案......

<receiver android:name=".Test" android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <data android:scheme="file"/>
    </intent-filter>
</receiver>

答案 1 :(得分:8)

您尝试在<data android:scheme="file" />中添加<intentfilter>标记,否则请在运行时进行注册。
在运行时,创建广播接收器的对象并将其传递给registerReceiver(obj)