Java 虽然发送广播正在工作,但接收器广播不工作

Java 虽然发送广播正在工作,但接收器广播不工作,java,android,broadcastreceiver,broadcast,android-broadcast,Java,Android,Broadcastreceiver,Broadcast,Android Broadcast,安卓工作室:3.0,安卓棉花糖 发送广播: package com.example.android.sendbroadcast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont

安卓工作室:3.0,安卓棉花糖

发送广播:

package com.example.android.sendbroadcast;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void onsendbroadcast(View view){
        Log.v("Inside","OnCLICK");
        Intent intent=new Intent();
        Log.v("Intent","Created");
        intent.setAction("com.example.android.sendbroadcast");
        Log.v("Action","Set");
        intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        sendBroadcast(intent);
        Log.v("Broadcast","Sent");
    }
}
接收广播

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver(){

    }
    
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.v("Inside","Reciever");
        Toast.makeText(context,"Broadcast Recieved",Toast.LENGTH_LONG).show();
    }
}
Android Manifest.xml

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <receiver
        android:name=".MyReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.example.android.sendbroadcast"></action>

        </intent-filter>

    </receiver>
</application>


上述发送广播运行正常。我甚至用日志检查过。但是接收广播没有运行。没有显示toast/log消息。原因是什么?

可以在代码的任何部分使用广播,您可以在其中获取上下文实例。但是,要接收,您必须收听特定的广播,这可以通过一个简单的IntentFilter完成,然后您可以使用给定的IntentFilter注册一个BroadcastReceiver。下面显示了一个示例实现

要发送的简单广播,我使用上下文对象将其发送到此处(片段和其他一些类需要):

下面还详细介绍了一种简单的接收方式:

首先,创建一个BroadcastReceiver实例

private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getStringExtra(Constants.NETWORK_STATE).equals(Constants.DISCONNECTED)) {
                //do something here
            }
        }
    };
接下来,向IntentFilter注册一个BroadcastReceiver,一个好位置是可执行类(片段、活动、服务或应用类)的onCreate或onResume方法:


IntentFilter使您能够在应用程序中获取适当的调用,因为android在设备上发送了大量的IntentFilter。

您还没有为您的BroadcastReceiver注册任何IntentFilter,我可以看出为什么MainActivity没有在清单中注册?
private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getStringExtra(Constants.NETWORK_STATE).equals(Constants.DISCONNECTED)) {
                //do something here
            }
        }
    };
@Override
    protected void onResume() {
        super.onResume();
        registerReceiver(receiver, new IntentFilter(Constants.NETWORK_CHANGE));
    }