Как сделать метод из другого файла класса Android запустить, когда телефон звонит? - PullRequest
0 голосов
/ 26 декабря 2011

Моя ситуация такова, что я хочу вызвать определенный метод для вызова из ClassA внутри моего ClassB, который расширяет класс BroadcastReceiver. Я понимаю, как сделать это из другого файла класса и т. Д. И как настроить BroadcastReceiver, или так я думал.

Ниже приведен файл класса, который расширяет BroadcastReceiver. Открытый класс WatchPhone расширяет BroadcastReceiver {

private ClassA classA;

@Override
public void onReceive(Context context, Intent BackToMain) {
    // TODO Auto-generated method stub
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
    int state = telephony.getCallState(); 
    switch(state) { 
        case TelephonyManager.CALL_STATE_RINGING:
            Log.d("TestServiceReceiver", "IDLE"); 
            classA.IwantToDoThis();
            break; 
    }
}

Метод, который я пытаюсь вызвать, прекрасно работает в приложении, если я запрашиваю его вручную. В моем AndroidManifest.xml я добавил это

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

и это внизу чуть выше закрывающего тега приложения.

            <receiver android:name=".WatchPhone">
                    <intent-filter> 
                    <action android:name="android.intent.action.PHONE_STATE" /> 
                    </intent-filter> 
            </receiver>

Когда телефон звонит, приложение вылетает, а затем закрывается. Любые идеи о том, что я должен делать.

1 Ответ

2 голосов
/ 26 декабря 2011

Я сразу вижу одну проблему: вы объявили экземпляр ClassA, но не создали его.Это означает, что classA = null, и вы, вероятно, получаете исключение NullPointerException при его использовании.

Попробуйте вместо этого:

private ClassA classA = new ClassA();

Альтернативно, вы можете создать его экземпляр в верхней части onReceive ():

classA = new ClassA();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...