私のフラグメントには、ボタンがあり、ボタンが押されると、次の方法でカスタム インテントをブロードキャストします。
package com.my.store.fragments.shopping;
public class ShoppingFragment extends Fragment{
...
@Override
public void onStart(){
super.onStart()
myButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
broadcastMyIntent(v);
}
});
}
public void broadcastMyIntent(View view){
Intent intent = new Intent();
intent.setAction("com.my.store.fragments.shopping.CUSTOM_INTENT");
getActivity().sendBroadcast(intent);
}
}
次に、ブロードキャスト レシーバーを定義しました。
package com.my.store.utils;
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Receive my intent", Toast.LENGTH_LONG).show();
}
}
レシーバーをAndroidManifest.xmlに登録します。
<application
...>
<activity ...>
...
</activity>
<!--this is the receiver which doesn't work-->
<receiver android:name="com.my.store.utils.MyReceiver">
<action android:name="com.my.store.fragments.shopping.CUSTOM_INTENT"/>
</receiver>
<!--I have another receiver here, it is working fine-->
<receiver android:name="com.my.store.utils.AnotherReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
</application>
アプリを実行し、ボタンを押してもレシーバーが呼び出されません。なんで?