繁体   English   中英

在不使用意图的情况下访问广播收件人中的主要活动

[英]Accessing main activity in Broadcast Reciever without using intent

我陷入了一个问题。 我有一个广播接收器,它调用类的方法在构造函数中包含上下文和主要活动引用。 我不知道如何访问广播接收器中的主要活动。这是我的代码:

public void onReceive(@NonNull Context context, @NonNull Intent intent) {
        if (context == null) {
            throw new IllegalArgumentException();
        }
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();

        if (info != null) {
            if (info.isConnected()) { 
                if (info.getType() == ConnectivityManager.TYPE_WIFI) {
                     Class myclass = new Class(context,mainactivity reference); //dont know how to get main activity here
                }

            }
        }
    }

有没有没有Intent的任何方法,还是有其他方法? 我正处于学习阶段,将不胜感激。

在清单中:

<receiver android:name="myreceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver> 

我不知道如何访问广播接收器中的主要活动

你不知道 如果这是清单注册的接收者,那么您可能始终没有此活动的实例。

或者:

  • 通过registerReceiver()Activity内部注册接收器,在这种情况下,嵌套的BroadcastReceiver类可以引用外部Activity实例,或者

  • 使用事件总线(greenrobot的EventBus, LocalBroadcastManager等)发布事件,并让您的活动订阅该总线(如果活动恰好在附近)

Try this hope it works:
in Main Activity:
public class MainActivity extends Activity {

public static MainActivity getInstance() {
    return new MainActivity();
}
}
And in your receiver:
MainActivity reference=MainActivity.getInstance();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM