4

マニフェストで BroadcastReceiver を指定すると、次のシステム アクションのいずれも受信しません。

public class BRMemoryHandler extends BroadcastReceiver 
{
    public BRMemoryHandler()
    {
        Log.d("BRMH", "ctor");
    }

    @Override
    public void onReceive(Context arg0, Intent arg1) 
    {
        Log.d("BRMH", "onReceive()");
    }
}

<application
    android:name="Test"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >

    <receiver android:name=".BRMemoryHandler" >
        <intent-filter>
            <action android:name="android.intent.action.ACTION_HEADSET_PLUG" />
            <action android:name="android.intent.action.ACTION_DEVICE_STORAGE_OK" />
        </intent-filter>
    </receiver>

ただし、メイン アクティビティで同じブロードキャスト レシーバーをプログラムで作成すると、このアクションを受け取ることができます。

void onCreate(Bundle b)
{
    super.onCreate(Bundle b);

    BRMemoryHandler tbr = new BRMemoryHandler();

    IntentFilter intF = new IntentFilter();
    intF.addAction(Intent.ACTION_HEADSET_PLUG);
    intF.addAction(Intent.ACTION_DEVICE_STORAGE_LOW);

    registerReceiver(tbr, intF);
4

0 に答える 0