未调用 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);  

备注

  1. AndroidManifest.xml或java代码中注册

  2. 然后在java代码中发送Broadcast

  3. onDestroy() 方法中注销接收器

    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        unregisterReceiver(receiver);  
    } 
    

感谢@KeLiuyue 和@Mike M. 为我提供解决方案。但问题不在广播代码中。问题出在导致我的应用程序无法响应的服务中,因此我在我的应用程序中发送和接收广播时遇到问题。我的服务没有响应的原因是这条线。

android.os.Debug.waitForDebugger();

我刚刚删除了这一行,一切正常。