我的情况是我想调用一个特定的方法从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>
当手机响铃时,应用程序崩溃然后关闭。关于我应该做什么的任何想法。
答案 0 :(得分:2)
我可以立即看到一个问题:您声明了一个ClassA实例但没有实例化它。这意味着classA = null,当你使用它时,你可能会得到一个NullPointerException。
请改为尝试:
private ClassA classA = new ClassA();
或者,您可以在onReceive()顶部附近实例化它:
classA = new ClassA();