如何制作方法从手机响铃时运行的另一个Android类文件?

时间:2011-12-25 22:15:05

标签: android phone-call

我的情况是我想调用一个特定的方法从ClassB中调用ClassA,它扩展了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 个答案:

答案 0 :(得分:2)

我可以立即看到一个问题:您声明了一个ClassA实例但没有实例化它。这意味着classA = null,当你使用它时,你可能会得到一个NullPointerException。

请改为尝试:

private ClassA classA = new ClassA();

或者,您可以在onReceive()顶部附近实例化它:

classA = new ClassA();