当 BroadcastReceiver 应用未启动时,在 Android 中从 BroadcastReceiver 调用 Activity 方法
Calling a Activity method from BroadcastReceiver in Android when BroadcastReceiver app is not started
我的 ReceiverApp 中有一个 Broadcastreceiver,我从 SenderApp 调用它并且工作正常。
我想在我的 ReceiverApp 中调用 Activity 的方法。
如果满足以下先决条件,我该如何做到这一点? :
ReceiverApp 未启动,无法动态注册接收器。
我无法从我的发件人调用 Receivers Mainactivity,因为我想阻止显示 Receiver 的任何 Activity 屏幕。 Sender 应该只调用 ReceiverActivity 方法并继续进行,因此 Senderscreen 应该始终在最上面。
我无法执行 ReceiverActivity 方法 "static",因为这样我就失去了 Activity 的上下文。例如,我需要使用以下方法获取接收器的包名称:this.getPackageName()
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(); <<<<<--------
}
}
有什么提示或帮助吗?
根据定义,你想要的是不可能的。如果 activity 不存在,则无法对其调用方法。
将您的代码移动到接收方和 activity 都可以访问的一些公共位置,例如静态方法。
I cant do the ReceiverActivity Method "static", because then I loose the context of the Activity.
将 Context
作为参数传递给该方法。
I need for example to fetch the Packagename of the Receiver with : this.getPackageName()
在传递给 onReceive()
的 Context
上调用 getPackageName()
。
我的 ReceiverApp 中有一个 Broadcastreceiver,我从 SenderApp 调用它并且工作正常。 我想在我的 ReceiverApp 中调用 Activity 的方法。
如果满足以下先决条件,我该如何做到这一点? :
ReceiverApp 未启动,无法动态注册接收器。
我无法从我的发件人调用 Receivers Mainactivity,因为我想阻止显示 Receiver 的任何 Activity 屏幕。 Sender 应该只调用 ReceiverActivity 方法并继续进行,因此 Senderscreen 应该始终在最上面。
我无法执行 ReceiverActivity 方法 "static",因为这样我就失去了 Activity 的上下文。例如,我需要使用以下方法获取接收器的包名称:
this.getPackageName()
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(); <<<<<-------- }
}
有什么提示或帮助吗?
根据定义,你想要的是不可能的。如果 activity 不存在,则无法对其调用方法。
将您的代码移动到接收方和 activity 都可以访问的一些公共位置,例如静态方法。
I cant do the ReceiverActivity Method "static", because then I loose the context of the Activity.
将 Context
作为参数传递给该方法。
I need for example to fetch the Packagename of the Receiver with : this.getPackageName()
在传递给 onReceive()
的 Context
上调用 getPackageName()
。