BroadCast Receiver onReceive未调用

时间:2017-08-19 13:34:03

标签: android bluetooth broadcastreceiver android-broadcastreceiver

我正在尝试从服务发送广播但是接收器中没有收到广播。以下是我的代码

蓝牙服务

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;
}

}

我的广播接收器如下。

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>

还有一件事:

当我的服务正在运行并向我的活动发送广播(未收到)时,我的应用显示应用没有响应。

2 个答案:

答案 0 :(得分:1)

感谢@KeLiuyue和@Mike M.建议我的解决方案。但问题不在广播代码中。问题在于服务导致我的应用程序没有响应,因此我在我的应用程序中发送和接收广播时出现问题。我的服务没有回应的原因是这一行。

react-native iniit

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

答案 1 :(得分:0)

试试这个。

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代码中发送sendBroadcast

  3. onDestroy()方法

    中取消注册接收方
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        unregisterReceiver(receiver);  
    }