在未启动BroadcastReceiver应用程序时,从Android中的BroadcastReceiver调用Activity方法

时间:2015-02-26 12:40:54

标签: android android-activity broadcastreceiver

我的ReceiverApp中有一个Broadcastreceiver,我从SenderApp调用,这个工作正常。 我想在我的ReceiverApp中调用Activity的方法。

如何使用以下先决条件执行此操作? :

  • ReceiverApp未启动,无法动态注册接收器。

  • 我无法从发件人调用Receivers Mainactivity,因为我想阻止显示Receiver的任何ActivityScreen。发件人应该只调用ReceiverActivity方法并继续进行,因此Senderscreen应始终位于顶部。

  • 我无法执行ReceiverActivity方法"静态",因为那时我松开了Activity的上下文。例如,我需要使用:this.getPackageName()

    来获取接收器的Packagename
    public class MyBroadcastReceiver extends BroadcastReceiver {
    
    @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            // Extract data included in the Intent
            CharSequence intentData = intent.getCharSequenceExtra("message");  
            Toast.makeText(context, "Say : "+intentData, Toast.LENGTH_LONG).show();
    
            MainActivity.myMethod(); <<<<<--------
    
        }
    

    }

任何提示或帮助?

1 个答案:

答案 0 :(得分:1)

根据定义,你想要的是不可能的。如果活动不存在,则无法在其上调用方法。

将代码移动到可从接收者和活动访问的某个公共位置,例如静态方法。

  

我无法执行ReceiverActivity方法&#34;静态&#34;,因为那时我松开了Activity的上下文。

Context作为参数传递给方法。

  

我需要例如使用以下命令获取Receiver的Packagename:this.getPackageName()

致电getPackageName()传递给Context的{​​{1}}。