Ich wollte eine App erstellen, die einen eingehenden Anruf basierend auf einigen Einstellungen ableitet, was auf Android 1.6 unmöglich scheint. Also beschloss ich, eine App zu schreiben, die den Klingelton stummschaltet, wenn der Anruf gelöscht wurde. Die Sache ist, dass wenn ich getSystemService (Context.AUDIO_SERVICE) aufrufen, bekomme ich eine Ausnahme.Ausnahme bei getSystemService (Context.AUDIO_SERVICE)
Das sind meine Klassen:
CallReceiver
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyPhoneStateListener phoneListener = new MyPhoneStateListener();
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
MyPhoneStateListener
public class MyPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber){
if (state == TelephonyManager.CALL_STATE_RINGING)
{
Log.d("DEBUG", "RINGING");
(new TMLService()).ManageIncomingCall(incomingNumber);
}
}
}
Und es gibt eine Klasse namens TMLService die Service erweitert, die diese Methode enthält
public void ManageIncomingCall(String incomingNumber)
{
super.onCreate();
AudioManager audioManage = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManage.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
Wie ich schon sagte, wenn ich AudioManager anrufe audioManage = (AudioManager) getSystemService (Context.AUDIO_SERVICE); Die Anwendung stoppt und das ist, was ich im LogCat bekomme:
D/DEBUG ( 356): RINGING
D/AndroidRuntime( 356): Shutting down VM
W/dalvikvm( 356): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
E/AndroidRuntime( 356): Uncaught handler: thread main exiting due to uncaught exception
D/CallNotifier( 103): RINGING... (new)
E/AndroidRuntime( 356): java.lang.NullPointerException
E/AndroidRuntime( 356): at android.content.ContextWrapper.getSystemService(ContextWrapper.java:335)
E/AndroidRuntime( 356): at tml.v1.Service.TMLService.ManageIncomingCall(TMLService.java:94)
E/AndroidRuntime( 356): at tml.v1.Service.MyPhoneStateListener.onCallStateChanged(MyPhoneStateListener.java:14)
E/AndroidRuntime( 356): at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:298)
E/AndroidRuntime( 356): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 356): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 356): at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime( 356): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 356): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 356): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime( 356): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime( 356): at dalvik.system.NativeStart.main(Native Method)
D/CallNotifier( 103): onNewRingingConnection(): incoming
Ich werde dir die Punkte belohnen, weil du tatsächlich erklärt hast, was passiert ist ... aber ich habe es letzte Nacht repariert und bin sofort eingeschlafen. Am Ende musste ich nur um eine andere Klasse bitten, anstatt eine neue zu erstellen. @ MyPhoneStateListener tml.v1.UI.MainActivity.GetService(). ManageIncomingCall (eingehende Nummer); – PedroC88
Danke :) Ich bin froh, dass es funktioniert hat. –