MOSDEV
- Forum-Beiträge: 57
03.12.2012, 12:43:41 via Website
03.12.2012 12:43:41 via Website
Ich bin gerade dabei ein kleines Projekt zu erstellen...
Ich benötige eine App die auf Anrufe, SMS etc. reagiert und in eine Datenbank die Ereignisse einfügt.
Nun habe ich einen simplen PhoneStateListener programmiert. Es funktioniert auch. Wenn ich 2 Emulatoren laufen lasse und den anderen intern anrufe reagiert der Listener auch. Mein Problem, die Ereignisse werden mit jedem Ereignis EIN MAL Mehr angezeigt.
Bsp:
Eingehender Andruf von xxx (1x)
Aufgelegt (2x)
Eingehender Andruf von xxx (3x)
Aufgelegt (4x)
usw...
Später würde es dazuführen, dass die Daten in die Datenbank falsch gespeichert werden...
Vielleicht kann mir ja jemand einen Tipp geben.. Hab schon einiges versucht, jedoch finde ich den Fehler nicht...
Ich benötige eine App die auf Anrufe, SMS etc. reagiert und in eine Datenbank die Ereignisse einfügt.
Nun habe ich einen simplen PhoneStateListener programmiert. Es funktioniert auch. Wenn ich 2 Emulatoren laufen lasse und den anderen intern anrufe reagiert der Listener auch. Mein Problem, die Ereignisse werden mit jedem Ereignis EIN MAL Mehr angezeigt.
Bsp:
Eingehender Andruf von xxx (1x)
Aufgelegt (2x)
Eingehender Andruf von xxx (3x)
Aufgelegt (4x)
usw...
Später würde es dazuführen, dass die Daten in die Datenbank falsch gespeichert werden...
1package org.mosdev.phonelogger;
2
3import android.content.BroadcastReceiver;
4import android.content.Context;
5import android.content.Intent;
6import android.os.Bundle;
7import android.telephony.PhoneStateListener;
8import android.telephony.TelephonyManager;
9import android.widget.Toast;
10
11public class CallReciever extends BroadcastReceiver {
12
13 private MyPhoneStateListener phoneListener;
14 public CallReciever() {
15
16 }
17
18 @Override
19 public void onReceive(Context context, Intent intent) {
20 Bundle extras = intent.getExtras();
21 String action=intent.getAction();
22 if (phoneListener==null)
23 {
24 phoneListener = new MyPhoneStateListener(context);
25 TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
26 telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
27 }
28 }
29
30}
2
3import android.content.BroadcastReceiver;
4import android.content.Context;
5import android.content.Intent;
6import android.os.Bundle;
7import android.telephony.PhoneStateListener;
8import android.telephony.TelephonyManager;
9import android.widget.Toast;
10
11public class CallReciever extends BroadcastReceiver {
12
13 private MyPhoneStateListener phoneListener;
14 public CallReciever() {
15
16 }
17
18 @Override
19 public void onReceive(Context context, Intent intent) {
20 Bundle extras = intent.getExtras();
21 String action=intent.getAction();
22 if (phoneListener==null)
23 {
24 phoneListener = new MyPhoneStateListener(context);
25 TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
26 telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
27 }
28 }
29
30}
1package org.mosdev.phonelogger;
2
3import android.content.Context;
4import android.telephony.PhoneStateListener;
5import android.telephony.TelephonyManager;
6import android.widget.Toast;
7
8public class MyPhoneStateListener extends PhoneStateListener {
9
10 private Context context;
11 public MyPhoneStateListener(Context context)
12 {
13 this.context = context;
14 }
15
16 @Override
17 public void onCallStateChanged(int state, String incomingNumber) {
18 super.onCallStateChanged(state, incomingNumber);
19 switch(state)
20 {
21 case TelephonyManager.CALL_STATE_IDLE:
22 {
23 Toast.makeText(context, "PHONE IDLE", Toast.LENGTH_LONG).show();
24 break;
25 }
26 case TelephonyManager.CALL_STATE_RINGING:
27 {
28 Toast.makeText(context, "INCOMING CALL FROM "+incomingNumber, Toast.LENGTH_LONG).show();
29 break;
30 }
31 case TelephonyManager.CALL_STATE_OFFHOOK:
32 {
33 Toast.makeText(context, "OFF HOCK", Toast.LENGTH_LONG).show();
34 break;
35 }
36
37 }
38 }
39
40}
2
3import android.content.Context;
4import android.telephony.PhoneStateListener;
5import android.telephony.TelephonyManager;
6import android.widget.Toast;
7
8public class MyPhoneStateListener extends PhoneStateListener {
9
10 private Context context;
11 public MyPhoneStateListener(Context context)
12 {
13 this.context = context;
14 }
15
16 @Override
17 public void onCallStateChanged(int state, String incomingNumber) {
18 super.onCallStateChanged(state, incomingNumber);
19 switch(state)
20 {
21 case TelephonyManager.CALL_STATE_IDLE:
22 {
23 Toast.makeText(context, "PHONE IDLE", Toast.LENGTH_LONG).show();
24 break;
25 }
26 case TelephonyManager.CALL_STATE_RINGING:
27 {
28 Toast.makeText(context, "INCOMING CALL FROM "+incomingNumber, Toast.LENGTH_LONG).show();
29 break;
30 }
31 case TelephonyManager.CALL_STATE_OFFHOOK:
32 {
33 Toast.makeText(context, "OFF HOCK", Toast.LENGTH_LONG).show();
34 break;
35 }
36
37 }
38 }
39
40}
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="org.mosdev.phonelogger"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="8"
9 android:targetSdkVersion="16" />
10 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
11
12 <application
13 android:allowBackup="true"
14 android:icon="@drawable/ic_launcher"
15 android:label="@string/app_name"
16 android:theme="@style/AppTheme" >
17 <activity
18 android:name="org.mosdev.phonelogger.MainActivity"
19 android:label="@string/app_name" >
20 <intent-filter>
21 <action android:name="android.intent.action.MAIN" />
22
23 <category android:name="android.intent.category.LAUNCHER" />
24 </intent-filter>
25 </activity>
26 <receiver android:name=".CallReciever">
27 <intent-filter >
28 <action android:name="android.intent.action.PHONE_STATE" />
29 </intent-filter>
30 </receiver>
31 <receiver android:name=".MessageReciever"></receiver>
32 </application>
33
34</manifest>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="org.mosdev.phonelogger"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="8"
9 android:targetSdkVersion="16" />
10 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
11
12 <application
13 android:allowBackup="true"
14 android:icon="@drawable/ic_launcher"
15 android:label="@string/app_name"
16 android:theme="@style/AppTheme" >
17 <activity
18 android:name="org.mosdev.phonelogger.MainActivity"
19 android:label="@string/app_name" >
20 <intent-filter>
21 <action android:name="android.intent.action.MAIN" />
22
23 <category android:name="android.intent.category.LAUNCHER" />
24 </intent-filter>
25 </activity>
26 <receiver android:name=".CallReciever">
27 <intent-filter >
28 <action android:name="android.intent.action.PHONE_STATE" />
29 </intent-filter>
30 </receiver>
31 <receiver android:name=".MessageReciever"></receiver>
32 </application>
33
34</manifest>
Vielleicht kann mir ja jemand einen Tipp geben.. Hab schon einiges versucht, jedoch finde ich den Fehler nicht...
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.