Android广播接收器不工作

我试图让广播接收机工作。 应该尽可能简单,我有我的这样的清单:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mytest.intentRec" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <activity android:name=".mainAct" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.mytest.intentRec.MyIntentRec" android:enabled="true" > </receiver> </application> <uses-sdk android:minSdkVersion="7" /> </manifest> 

正如你所看到的,我有一个主要的活动mainAct,这只是一旦开始发送广播:

 public class mainAct extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.sendBroadcast(new Intent()); } } 

我有一个类MyIntentRec,它是这样简单:

 public class MyIntentRec extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v("IntentRec", "got it"); } } 

我期望的是,当我开始我的应用程序,广播发送和拾起,并写入日志条目。 我没有看到该日志条目,我没有看到任何错误。 我怀疑清单中有错误或发送广播。 我只是在那里创build了一个空的意图,它是否需要某些特定的属性?

Solutions Collecting From Web of "Android广播接收器不工作"

请为您的意图设置类,

EX:

 public class mainAct extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent i=new Intent("any string"); i.setClass(this, MyIntentRec.class); this.sendBroadcast(i); } } 

这意味着什么“没有任何filter意味着它只能由指定其确切的类名的Intent对象调用”。

[旧的回答]
您应该在清单中注册您需要的操作types。
例如:

  <receiver android:name="com.mytest.intentRec.MyIntentRec" android:enabled="true" > <intent-filter> <action android:name="your.intent" /> </intent-filter> </receiver> 

发送,

 this.sendBroadcast(new Intent("your.intent")); 

new Intent();不足以做出new Intent(); 。 你必须用一些行动来指定它。 此外,您必须在清单中指定此特定操作的意图filter。 请阅读更多这里和这里 。

您没有在清单中为您的BroadcastReceiver定义任何意向filter。 为自定义操作types指定一个。 您还必须在启动时的brodcast中定义此自定义操作types。

尝试指定接收者应该在清单中捕获什么操作。 你可以这样做:

 <receiver android:name="com.mytest.intentRec.MyIntentRec"> <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver>