使用broadcastreceiver从另一个类调用方法

时间:2014-07-12 12:43:17

标签: android notifications broadcastreceiver

当我的广播接收者收到wifi状态发生变化时,我试图从我的MainActivity调用一个方法。我的接收器类中的代码如下所示:

public class ActionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "Wifi toggled", Toast.LENGTH_SHORT).show();
}

对于broadcastreceiver(toast工作得非常好),我想调用一个创建通知的方法,如下所示:

public void createNotification() {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(getResources().getString(R.string.nTitle))
            .setContentText(getResources().getString(R.string.nText));

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(contentIntent);

    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(notiId, builder.build());
}

如果我只是说:

MainActivity.createNotification();

在onReceive它不会工作。我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

MainActivity是类,您需要的是访问正在运行的实例,因此您需要使用传递的实例,上下文,但您需要将其强制转换,以便您可以使用以下内容:

((MainActivity) context).createNotification();