在不使用意图的情况下访问Broadcast Reciever中的主要活动

时间:2017-05-15 14:43:46

标签: android android-activity broadcastreceiver main-activity

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

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> 

2 个答案:

答案 0 :(得分:0)

  

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

你不是。如果这是一个清单注册的接收者,无论如何你可能没有这个活动的实例。

或者:

  • 通过<script src=".../angular.min.js> .... <script src=".../angular-chosen-localytics/dist/angular-chosen.min.js"></script> Activity内注册接收器,在这种情况下,嵌套的registerReceiver()类可以引用外部BroadcastReceiver实例,或

  • 使用活动总线(greenrobot的EventBus,Activity等)发布您的活动,并让您的活动订阅该公交车(如果活动恰好在附近)< / p>

答案 1 :(得分:0)

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();