我想从BroadcastReceiver开始一个活动。问题在于,当我尝试启动它时,我得到一个异常,它告诉我添加“FLAG_ACTIVITY_NEW_TASK”标志,因为我的Receiver已注册到服务而不是注册到Activity。 所以,我将我的代码修改为BroadcastReceiver类:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Intent start=new Intent(context,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(start);
}
但我的活动没有开始。有谁能解释我为什么会出现这种行为?
答案 0 :(得分:1)
我认为问题出在旗帜上,就像这样使用
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
但您使用了addFlags()
函数。
答案 1 :(得分:1)
您可以使用: -
@Override
public void onReceive(Context context, Intent intent) {
intent.setClass(context, nextgoingactivity);
intent.putExtra("sipcallid", sipAddress); // your data
intent.putExtra("sipAddress", sipcallid); // your data
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
并更新您的AndroidManifesh.xml,
<receiver android:name=".IncomingCallReceiver" android:label="Call Receiver">
<intent-filter>
<action android:name=".nextgoingactivity"/>
</intent-filter>
</receiver>
它应该可以解决您的问题!
答案 2 :(得分:0)
我想这只是一个错字。
您必须致电start.addFlags()
,而不是intent.addFlags()
。