Android 广播接收机未接收

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

我已经阅读了SO问题中的说明和示例,但仍然无法实现一个简单的BroadcastReceiver,它根本不接收任何内容,有人能就以下代码提供一些建议吗

tnx

我的活动:

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(意向);现在它工作了,谢谢!