BroadcastReceiver 没有收到任何数据

BroadcastReceiver not receiving any data

我使用此代码将数据发送到我的 BroadcastReceiver

Log.d("recive message message message", message);

Intent resultBroadCastIntent = new Intent();
resultBroadCastIntent.setAction(Intent.ACTION_SEND);
resultBroadCastIntent.addCategory(Intent.CATEGORY_DEFAULT);
resultBroadCastIntent.putExtra(OUTPUT_TEXT, message);

sendBroadcast(resultBroadCastIntent);

和 BroadcastReceiver 代码

public class Broadcast_Receiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, Notification_Intent_Service.class));
    String resultText =intent.getStringExtra(Notification_Intent_Service.OUTPUT_TEXT);

    Log.d("recive dwwwwwwwwwwwwwwww", resultText); 
    // this never run when message arrive
    }
}

这是我的清单

  <receiver
        android:name=".Service.Broadcast_Receiver"
        android:enabled="true"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
  </receiver>

现在

Log.d("recive message message message", message); 

消息已打印,我看到了,但它没有发送到 BroadcastReceiver 还是 BroadcastReceiver 没有收到数据?我不确定问题出在哪里。

发送广播时可以使用BOOT_COMPLETEDid

Intent resultBroadCastIntent = new Intent("android.intent.action.BOOT_COMPLETED");
resultBroadCastIntent.putExtra(OUTPUT_TEXT, message);
sendBroadcast(resultBroadCastIntent);

或在 <intent-filter>

中指定 SEND 操作
<intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED" />
         <action android:name="android.intent.action.SEND" />
</intent-filter> 

注意:确保您的 BroadcastReceiver 不是内部 class 否则将静态添加到其中或将其移动到上层。

您需要在清单

中为广播接收器注册Intent.ACTION_SEND
 <receiver
     android:name=".Service.Broadcast_Receiver"
     android:enabled="true"
     android:label="@string/app_name" >
     <intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED" />
         <action android:name="android.intent.action.SEND" />
     </intent-filter> 
</receiver>