Android 广播接收机未接收
我已经阅读了SO问题中的说明和示例,但仍然无法实现一个简单的BroadcastReceiver,它根本不接收任何内容,有人能就以下代码提供一些建议吗 tnx 我的活动:Android 广播接收机未接收,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,我已经阅读了SO问题中的说明和示例,但仍然无法实现一个简单的BroadcastReceiver,它根本不接收任何内容,有人能就以下代码提供一些建议吗 tnx 我的活动: public class Receiver1Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceSt
public class Receiver1Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter(MyService.MY_ACTION);
registerReceiver(new MyReceiver(), filter);
Intent intent = new Intent();
startService(intent);
}
}
我的接收人:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Log.i("MyReceiver", "onreceive");
}
}
发送广播的我的服务:
public class MyService extends Service {
public static final String MY_ACTION = "com.receiver1.myaction";
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Intent intent2 = new Intent(MY_ACTION);
sendBroadcast(intent2);
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.receiver1"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Receiver1Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyService"></service>
</application>
</manifest>
您需要。在你这么做之前,Android操作系统将无法找到你的广播接收器。你确定你的服务已经开始了吗?看起来您只是创建了一个空白意图并调用startService()
您的broadcastReceiver似乎是正确的。您正在启动一个意图为空的服务。我可以假设您想启动您的MyService以获得一个工作代码。我是一个新手,所以,我希望现在情况会有所好转,我已在缺少的地方标记了答案:)您好,Receiver已在活动中动态声明,因此需要在清单中声明它。@iNan,说得好。我想我还是会把它移到清单上,但这可能是因为我在这里没有完整的生命周期的概念。如果他的服务正在运行,是否保证已创建活动?如果活动处于活动状态,则活动可以接收广播,android希望在活动终止时注销所有动态注册的广播。是的,当然,我会在“real”项目中这样做,但是我写这个POC是为了消除bg噪声,并且能够在这里为你们发布一些东西:)所以问题不是接收器的移除,也不是它的动态注册。前面的答案似乎是正确的,因为服务无法启动…嗯,实际上,我现在看到你是正确的,服务没有到达onStartCommand,不知道为什么它会更早到达那里。。。我在日志中看到:“无法启动服务意图[]:未找到”。为什么呢?为什么一个空洞的意图还不够?我没有收到来自服务的任何特殊请求-只是它应该启动…好了,我打错了startService。我应该像这样创建意图:intent intent=newintent(this,MyService.class);startService(意向);现在它工作了,谢谢!