所以我得到了以下错误代码:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
该行:Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
我想做的是在接到电话时设置一个新的活动。以下功能是应“切换”到该活动的功能。
public void callMode() {
Intent callMode = new Intent(MainActivity.this, IncallActivity.class);
startActivity(callMode);
}
它位于MainActivity类内部,位于onCreate函数之外。
当我尝试将其放入onCreate函数中时(当然没有public void callMode()
),它可以工作,但这不是目标。
我正试图从另一个类中激活此新活动,该类监听呼叫。
public class CallReceiver extends BroadcastReceiver {
IncallActivity incallActivity = new IncallActivity();
public MainActivity mainActivity;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
mainActivity.callMode();
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
incallActivity.endCallMode();
}
}
}
那为什么会出现此错误?
答案 0 :(得分:0)
我找到了一种方法。
您需要在代码中添加public static Context context
,然后在onCreate中执行context = getBaseContext();
从那里,您可以从任何所需的班级开始第二个活动。