如何从BroadcastReceiver调用活动方法?

时间:2011-09-21 06:53:42

标签: android

我正在开发一个应用程序,我需要从BroadcastReceiver调用一个活动方法。

我的应用是当用户接到电话时,广播接收器会发现并向该特定号码发送消息。

我能够得到那个没有,但是我想发一条消息给那个号码,因为这个发送短信我在旁边发送sms方法创建了一个活动就在那里..

如何从BroadcastReceiver中调用该特定方法。

2 个答案:

答案 0 :(得分:1)

您需要制作该方法static and public inside your activity。您可以像这样调用该方法:

ActivityName.mehtodName();

如果将该方法放在util类中并从那里调用它会好得多。

答案 1 :(得分:0)

您可以使用界面来创建回调,以便从BroadcastReceiver

调用该活动方法
interface MyCallback{

      public void doStuff();

}

在BroadcastReceiver中提供回调

public class MyBroadcastReceiver extends BroadcastReceiver{

   private MyCallback callback;

   public MyBroadcastReceiver(MyCallback callback){

       this.callback = callback;          //<-- Initialse it

   } 

   @Override
   public void onReceive(Context context, Intent intent) {

       callback.doStuff();                //<--- Invoke callback method
   }

}

现在在您的Activity中实现回调并覆盖方法

MyActvity extends AppcompatActivity implements MyCallback {

   // Your Activity related code //
   // new MyBroadcastReceiver(this);    <-- this is how you create instance

   private void sendSMS(){
     // your logic to send SMS
   } 


   @Override 
   public void doStuff(){
     sendSMS();          //<--- Call the method to show alert dialog
   }

}
  

您可以了解使用这种方法here in detail

的优势