Android 广播接收器未接收到来自内部服务的意图
我的应用程序中有一个活动和一个服务,我从另一个向它们发送广播。当我的活动接收从我的服务发送的广播时,我的服务不接收从我的活动发送的广播 以下是我的一些代码: 活动Android 广播接收器未接收到来自内部服务的意图,android,service,android-intent,broadcastreceiver,Android,Service,Android Intent,Broadcastreceiver,我的应用程序中有一个活动和一个服务,我从另一个向它们发送广播。当我的活动接收从我的服务发送的广播时,我的服务不接收从我的活动发送的广播 以下是我的一些代码: 活动 @Override public void onResume() { Log.i(TAG, "in onResume"); IntentFilter messageFilter = new IntentFilter(Constants.MESSAGE); messageReceiver receive
@Override
public void onResume()
{
Log.i(TAG, "in onResume");
IntentFilter messageFilter = new IntentFilter(Constants.MESSAGE);
messageReceiver receiver = new messageReceiver();
registerReceiver(receiver, messageFilter);
startService(new Intent(this, Server.class));
super.onResume();
}
public class messageReceiver extends BroadcastReceiver
{
@Override
public void onReceive (Context context, Intent intent)
{
Log.i(TAG, "in messageReceiver");
serverStatus.setText(intent.getStringExtra(Constants.MESSAGE));
}
}
@SuppressLint("ParserError")
public OnClickListener btnSendClicked = new OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "btnSend clicked");
// This broadcast is NOT picked up by my Service
Intent sendClicked = new Intent(Constants.SEND_CLICKED);
sendBroadcast(sendClicked);
}
};
服务
@SuppressLint({ "ParserError", "ParserError", "ParserError" })
public class btnSendClickedReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1) {
// Do some stuff
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.i(TAG, "in onStartCommand");
SERVERIP = getLocalIpAddress();
IntentFilter sendClickedFilter = new IntentFilter(Constants.SEND_CLICKED);
btnSendClickedReceiver receiver = new btnSendClickedReceiver();
registerReceiver(receiver, sendClickedFilter);
runServer();
return START_STICKY;
}
@SuppressLint("ParserError")
public void runServer()
{
try
{
if (SERVERIP != null)
{
Log.i(TAG, "inside runServer");
// This broadcast is picked up by my activity:
Intent intent = new Intent(Constants.MESSAGE);
intent.putExtra(Constants.MESSAGE, "Listening on IP: " + SERVERIP);
sendBroadcast(intent);
serverSocket = new ServerSocket(SERVERPORT);
while (true)
{
client = serverSocket.accept();
Log.i(TAG, "connected");
Intent connectedIntent = new Intent(Constants.MESSAGE);
connectedIntent.putExtra(Constants.MESSAGE, "Connected");
sendBroadcast(connectedIntent);
}
}
else
{
// no internet connection
}
} catch (Exception e)
{
//Error
e.printStackTrace();
}
}
显示
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="message"/>
<action android:name="SendClicked"/>
</intent-filter>
</activity>
<service android:name=".Server" android:process=":remote">
</service>
我已经试着调试这几天了,但我不确定问题出在哪里。非常感谢您的帮助。
尚未在androidManifest.xml文件中创建广播接收器条目
请添加上述条目并重试。
尚未在androidManifest.xml文件中创建广播接收器条目
请添加上述条目并重试。我也遇到了同样的问题。我取出:远程说明符,然后它就工作了。我不知道为什么会有不同。我也没有在清单中指定接收人。我也有同样的问题。我取出:远程说明符,然后它就工作了。我不知道为什么会有不同。我也没有在清单中指定接收者。您的清单中没有声明接收者。您的清单中没有声明接收者。我动态注册接收者,因此,据我所知,我也不需要在清单中注册接收者。如果是这样的话,我的两个接收者都不会工作,因为我没有在清单中注册他们中的任何一个。我动态注册我的接收者,因此,据我所知,我也不需要在清单中注册它。如果是这样的话,我的两个接收者都不会工作,因为我没有在舱单上登记他们中的任何一个。