Bonjour a vous.
Je tiens juste à préciser que je suis un débutant en java / android, il y a donc surement des boulettes qui traine dans mon code décrit,
je recherche désespérément depuis 2 jours sans rien trouver, pour afficher un preferencescreen suite à un événement.
En gros je souhaite créer un service, qui se lance au boot du téléphone cela fonctionne bien :
le code "d'écoute" :
le code du service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class OnReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("TestApp", "juju : " + intent.getAction()); if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { Log.d("TestApp", "Got the Boot Event>>>"); Log.d("TestApp", "Starting MySimpleService>>>"); context.startService(new Intent().setComponent(new ComponentName(context.getPackageName(), MonService.class.getName()))); } //code à rajouter }
jusque là tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class MonService extends Service { public MonService() { } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onRebind(Intent intent) { super.onRebind(intent); Log.d("TestApp", ">>>onRebind()"); } @Override public void onCreate() { super.onCreate(); Log.d("TestApp", ">>>onCreate()"); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.d("TestApp", ">>>onStart()"); } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); }
et quand mon service est lancé j'aimerai pouvoir le paramétrer, pour cela j'ai pensé à un truc qui serait bien sympa :
composer un numéro de téléphone, type code pin, et à l'appuie du bouton call, on regarde le numéro et, à la suite de cela soit la communication se fait, soit on la coupe pour afficher ensuite les préférences, c'est là que ca se gâte...
j'ai suivit un tuto qui fonctionne parfaitement pour afficher des préférences, puis ajouté un peu de code "d'écoute"
Seulement dans ma dernière condition if, je ne peux pas mettre le bout de code du tuto
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if ("android.intent.action.NEW_OUTGOING_CALL".equals(intent.getAction())) { Log.d("TestApp", "APPEL Got the Boot Event>>>" + getResultData()); String number = getResultData(); if(number.equals("1234")){ }
car la class n'est pas une extension de "PreferenceActivity" mais "BroadcastReceiver"
Code : Sélectionner tout - Visualiser dans une fenêtre à part addPreferencesFromResource(R.xml.prefs);
j'ai donc créé une nouvelle class comme dans le tuto par contre je n'ai rien fait la concernant dans le manifest :
et maintenant je cherche a appeler cette class, pour m'afficher les prefs... et là je seche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class PrefsActivity extends PreferenceActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } }
j'ai testé ceci en me doutant du résultat :
et évidement cela plante avec les log que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PrefsActivity Pref = new PrefsActivity(); Pref.onCreate(null);
voilà en espérant avoir été clair dans la description de mon besoin, je fais donc appel à votre savoir faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 04-25 13:07:18.383: D/TestApp(340): juju : android.intent.action.NEW_OUTGOING_CALL 04-25 13:07:18.383: D/TestApp(340): APPEL Got the Boot Event>>>258 04-25 13:07:18.383: D/TestApp(340): APPEL Starting MySimpleService>>> 04-25 13:07:18.804: D/AndroidRuntime(340): Shutting down VM 04-25 13:07:18.804: W/dalvikvm(340): threadid=1: thread exiting with uncaught exception (group=0x40015560) 04-25 13:07:18.843: E/AndroidRuntime(340): FATAL EXCEPTION: main 04-25 13:07:18.843: E/AndroidRuntime(340): java.lang.RuntimeException: Unable to start receiver com.note.OnReceiver: java.lang.NullPointerException 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.ActivityThread.access$2400(ActivityThread.java:117) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.os.Handler.dispatchMessage(Handler.java:99) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.os.Looper.loop(Looper.java:123) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.ActivityThread.main(ActivityThread.java:3683) 04-25 13:07:18.843: E/AndroidRuntime(340): at java.lang.reflect.Method.invokeNative(Native Method) 04-25 13:07:18.843: E/AndroidRuntime(340): at java.lang.reflect.Method.invoke(Method.java:507) 04-25 13:07:18.843: E/AndroidRuntime(340): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-25 13:07:18.843: E/AndroidRuntime(340): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-25 13:07:18.843: E/AndroidRuntime(340): at dalvik.system.NativeStart.main(Native Method) 04-25 13:07:18.843: E/AndroidRuntime(340): Caused by: java.lang.NullPointerException 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.Activity.onCreate(Activity.java:802) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.preference.PreferenceActivity.onCreate(PreferenceActivity.java:105) 04-25 13:07:18.843: E/AndroidRuntime(340): at com.note.PrefsActivity.onCreate(PrefsActivity.java:10) 04-25 13:07:18.843: E/AndroidRuntime(340): at com.note.OnReceiver.onReceive(OnReceiver.java:68) 04-25 13:07:18.843: E/AndroidRuntime(340): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794) 04-25 13:07:18.843: E/AndroidRuntime(340): ... 10 more
En vous remerciant par avance
Julien
Partager