未调用 BroadCast Receiver onReceive
BroadCast Receiver onReceive not called
我正在尝试从服务发送广播,但接收器没有收到。以下是我的代码
蓝牙服务
public class BluetoothService extends Service {
public final static String TAG = "com.example.linvor.BluetoothService";
Intent intent1 = new Intent(TAG);
static boolean isRunning = false;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
android.os.Debug.waitForDebugger();
super.onStartCommand(intent, flags, startId);
//android.os.Debug.waitForDebugger();
sendBroadcast(intent1);
return START_NOT_STICKY;
}
}
我的Broadcast receiver如下
ServiceBroadCastReceiver
public class ServiceBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.myLabel.setText("BroadCAst received");
if(intent.getAction().equals(BluetoothService.TAG)) {
Log.i("Broadcast status","BroadCast received");
}
}
}
我的清单声明是这样的。
清单
<receiver
android:name=".ServiceBroadCastReceiver"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="com.example.linvor.BluetoothService"></action>
</intent-filter>
</receiver>
还有一点:
当我的服务是 运行 并向我的 activity 发送广播(未收到)时,我的应用程序显示应用程序没有响应。
试试这个。
registerReceiver(receiver,new IntentFilter(BluetoothService.TAG));
Intent intent = new Intent();
//edited here ,your action
intent.setAction(BROADCAST_ACTION);
//send
sendBroadcast(intent);
已编辑
// edited here , add your service
Intent startIntent = new Intent(this, BluetoothService.class);
startService(startIntent);
备注
在AndroidManifest.xml
或java代码中注册
然后在java代码中发送Broadcast
在 onDestroy()
方法中注销接收器
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
感谢@KeLiuyue 和@Mike M. 为我提供解决方案。但问题不在广播代码中。问题出在导致我的应用程序无法响应的服务中,因此我在我的应用程序中发送和接收广播时遇到问题。我的服务没有响应的原因是这条线。
android.os.Debug.waitForDebugger();
我刚刚删除了这一行,一切正常。
我正在尝试从服务发送广播,但接收器没有收到。以下是我的代码
蓝牙服务
public class BluetoothService extends Service {
public final static String TAG = "com.example.linvor.BluetoothService";
Intent intent1 = new Intent(TAG);
static boolean isRunning = false;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
android.os.Debug.waitForDebugger();
super.onStartCommand(intent, flags, startId);
//android.os.Debug.waitForDebugger();
sendBroadcast(intent1);
return START_NOT_STICKY;
}
}
我的Broadcast receiver如下
ServiceBroadCastReceiver
public class ServiceBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.myLabel.setText("BroadCAst received");
if(intent.getAction().equals(BluetoothService.TAG)) {
Log.i("Broadcast status","BroadCast received");
}
}
}
我的清单声明是这样的。
清单
<receiver
android:name=".ServiceBroadCastReceiver"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="com.example.linvor.BluetoothService"></action>
</intent-filter>
</receiver>
还有一点:
当我的服务是 运行 并向我的 activity 发送广播(未收到)时,我的应用程序显示应用程序没有响应。
试试这个。
registerReceiver(receiver,new IntentFilter(BluetoothService.TAG));
Intent intent = new Intent();
//edited here ,your action
intent.setAction(BROADCAST_ACTION);
//send
sendBroadcast(intent);
已编辑
// edited here , add your service
Intent startIntent = new Intent(this, BluetoothService.class);
startService(startIntent);
备注
在
AndroidManifest.xml
或java代码中注册然后在java代码中发送Broadcast
在
onDestroy()
方法中注销接收器@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); }
感谢@KeLiuyue 和@Mike M. 为我提供解决方案。但问题不在广播代码中。问题出在导致我的应用程序无法响应的服务中,因此我在我的应用程序中发送和接收广播时遇到问题。我的服务没有响应的原因是这条线。
android.os.Debug.waitForDebugger();
我刚刚删除了这一行,一切正常。