你好必须从BroascastReceiver或服务启动一个新的Activity,但是我发现错误是在没有活动上下文的情况下无法启动活动。
我使用以下代码
Intent i=new Intent(this,MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
还包括Mainifest文件中的活动,
请解决,
另一个问题是,我在BroadcastReceiver内部启动了一个服务,但是当BroadcastReceiver生命周期完成时,此服务完成。我想活着的Serive
请帮我解决这个问题
答案 0 :(得分:2)
使用context
代替this
,如下所示:
Intent i=new Intent(context,MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
在manifest
文件中注册您的服务,然后使用startservice
。
答案 1 :(得分:2)
虽然我无法解决你的第一个问题,但我会回答第二个问题。
@Override
public void onReceive(Context context, Intent intent) {
Intent intent = new Intent(context, SampleService.class);
context.getApplicationContext().startService(intent);
}
此外,Android SDK开发人员don't recommend可以从广播接收者或服务开始活动。
答案 2 :(得分:0)
此代码对我来说很好
public void onReceive(Context context, Intent intent) {
Log.v(Tag, "Start Listening Phone Call");
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
switch (tm.getCallState()) {
case TelephonyManager.CALL_STATE_IDLE:
Log.v(Tag, "No call");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.v(Tag, "A new call arrived and is ringing or waiting");
Intent i = new Intent(context,MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
break;
}