我想从广播接收器调用主要活动中的方法。这是我的MainActivity
public class MainActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void DisplayConn(){
if(isNetworkStatusAvailable(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "internet is available", Toast.LENGTH_LONG).show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Error");
builder.setMessage("No Network Connection").setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
}
这是我的BroadcastReceiver
public class ConnectionReceiver extends BroadcastReceiver {
public ConnectionReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
MainActivity myAct = new MainActivity();
myAct.DisplayConn();
}
}
因此,每次我的广播都收到它,它将调用我的MainActivity中的方法。提前致谢。
答案 0 :(得分:0)
您可以使用LocalBroadcast Manager从ConnectionReceiver
发送本地广播。在MainActivity
中,您可以注册接收器以接收本地广播。您可以在调用onReceive
时发送本地广播,您的活动将收到该广播。然后在您的活动中,您可以在收到本地广播时调用该方法。此广播仅适用于您的应用。所以也是安全的。您可以在此处查看如何使用它:how to use LocalBroadcastManager?。
LocalBroadcastManager是一个帮助程序,用于注册和发送Intent广播到进程中的本地对象。与使用sendBroadcast(Intent)发送全局广播相比,这有许多优点。其中之一就是您播放的数据不会离开您的应用,因此不必担心泄露私人数据。