[英]Android - How to reference activity that registered receiver in BroadcastReceiver?
In my MainActivity I have: 在我的MainActivity中,我有:
this.registerReceiver(new SmsListener(),new IntentFilter("RECEIVED SMS"));
In my manifest.xml I have: 在我的manifest.xml中,我有:
<receiver android:name="com.example.SmsListener">
and in my BroadcastReceiver subclass I have: 在我的BroadcastReceiver子类中,我有:
public class SmsListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// how do I reference MainActivity here?
}
}
You can't get activity from Context. 您无法从Context获取活动。 If you really need it, I guess your only option is to save the reference of your MainActivity in a private static field and then make a static "getInstance()" method.
如果您确实需要它,我想您唯一的选择是将MainActivity的引用保存在私有静态字段中,然后创建一个静态“ getInstance()”方法。
public class MainActivity extends Activity {
private static MainActivity sActivity = null;
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sActivity = this;
...
}
public static MainActivity getInstance() {
return sActivity;
}
...
}
From your receiver you can now call 现在,您可以从接收方拨打电话
public class SmsListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
MainActivity myMainActivity = MainActivity.getInstance();
...
}
}
However, I don't think you want to do it. 但是,我认为您不想这样做。
try this solution 试试这个解决方案
public class SmsListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent (context, MainActivity.class);
context.startActivity(i);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.