报错Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
这是因为Context的startActivity()启动的standard模式下的activity需要在启动它的Activity的task(任务栈)里面执行,但是由于非Activity类型的Context并没有所谓的任务栈
添加下面的代码就行了。并且这个时候Activity是以singleTask模式启动的,详情建议去了解一下Activity的启动模式
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK )
那么为什么在Activity内不会报错呢
这是因为Activity继承了Context并且重载了该方法,所以使用起来不会有任何限制。