我正在尝试从服务发送广播但是接收器中没有收到广播。以下是我的代码
蓝牙服务
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>
还有一件事:
当我的服务正在运行并向我的活动发送广播(未收到)时,我的应用显示应用没有响应。
答案 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);
注意强>
在AndroidManifest.xml
或java代码中注册
然后在java代码中发送sendBroadcast
在onDestroy()
方法
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}