在不使用意图的情况下访问广播接收器中的 main activity
Accessing main activity in Broadcast Reciever without using intent
我遇到了一个问题。我有一个广播接收器调用 class 的方法接受上下文和构造函数中的主要 activity 引用。我不知道如何在广播中访问主 activity receiver.Here 是我的代码:
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>
I dont know how to access main activity in broadcast receiver
你不知道。如果这是一个清单注册的接收器,你可能没有这个 activity 的实例。
任一:
通过 registerReceiver()
从 Activity
内部注册接收器,在这种情况下,您的嵌套 BroadcastReceiver
class 可以引用外部 Activity
实例,或
使用事件总线(greenrobot 的 EventBus,LocalBroadcastManager
等)发布您的事件,并让您的 activity 订阅该总线(如果 activity正好在附近)
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();
我遇到了一个问题。我有一个广播接收器调用 class 的方法接受上下文和构造函数中的主要 activity 引用。我不知道如何在广播中访问主 activity receiver.Here 是我的代码:
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>
I dont know how to access main activity in broadcast receiver
你不知道。如果这是一个清单注册的接收器,你可能没有这个 activity 的实例。
任一:
通过
registerReceiver()
从Activity
内部注册接收器,在这种情况下,您的嵌套BroadcastReceiver
class 可以引用外部Activity
实例,或使用事件总线(greenrobot 的 EventBus,
LocalBroadcastManager
等)发布您的事件,并让您的 activity 订阅该总线(如果 activity正好在附近)
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();