Android Приложение продолжает вылетать при новом намерении - PullRequest
0 голосов
/ 28 мая 2020

Итак, у меня есть этот код ошибки: 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();
        }
    }
}

Так почему появляется эта ошибка?

1 Ответ

0 голосов
/ 29 мая 2020

Я нашел способ сделать это.

Вам нужно добавить public static Context context в свой код, а затем в onCreate сделать context = getBaseContext();

Оттуда вы можете запустить второе занятие из любого класса, который вы хотите.

...