Accessibility Service muss 2 mal aktiviert werden!

  • Antworten:8
Fabian
  • Forum-Beiträge: 144

27.12.2013, 14:26:51 via Website

Hey liebe Community,

ich muss in meiner App "Message Light" leider feststellen, dass bei der Installation der Service in der Eingabehilfe 2 mal aktiviert werden muss, damit er funktioniert.
Heißt, ich muss ihn an, wieder aus und wieder an machen, damit meine App checkt, dass dieser aktiviert ist.

Weiß einer woran das liegen mag? An Android vielleicht?

grüße Fabian!

Antworten
Fabian
  • Forum-Beiträge: 144

27.12.2013, 19:23:50 via Website

Mein Code für den Service:

1import android.accessibilityservice.AccessibilityService;
2import android.accessibilityservice.AccessibilityServiceInfo;
3import android.content.Context;
4import android.content.SharedPreferences;
5import android.os.CountDownTimer;
6import android.view.accessibility.AccessibilityEvent;
7
8public class MyAccessibilityService extends AccessibilityService {
9
10 MainActivity mainActivity = new MainActivity();
11 FlashLightClass fLC = new FlashLightClass();
12 SharedPreferences restore;
13
14 @Override
15 public void onAccessibilityEvent(AccessibilityEvent event) {
16 if (event.getPackageName().equals("com.whatsapp")) {
17 restore = getSharedPreferences(mainActivity.filesSharedPreferencesImages[0], Context.MODE_PRIVATE);
18 boolean enabled = restore.getBoolean(mainActivity.filesSharedPreferencesImages[0], false);
19 restore = getSharedPreferences(mainActivity.filesSharedPreferencesDuration[0],MODE_PRIVATE);
20 int length = restore.getInt(mainActivity.filesSharedPreferencesDuration[0], 0);
21 if (enabled && fLC.missionCompledet == true) {
22 fLC.startThread();
23 new CountDownTimer(length * 1000, 1000) {
24
25 @Override
26 public void onTick(long millisUntilFinished) {
27 }
28
29 @Override
30 public void onFinish() {
31 fLC.stopThread();
32 }
33 }.start();
34 }
35 } else {
36 restore = getSharedPreferences(mainActivity.filesSharedPreferencesImages[1], Context.MODE_PRIVATE);
37 boolean enabled = restore.getBoolean(mainActivity.filesSharedPreferencesImages[1], false);
38 restore = getSharedPreferences(mainActivity.filesSharedPreferencesDuration[1],MODE_PRIVATE);
39 int length = restore.getInt(mainActivity.filesSharedPreferencesDuration[1], 0);
40 if (enabled && fLC.missionCompledet == true) {
41 fLC.startThread();
42 new CountDownTimer(length * 1000, 1000) {
43
44 @Override
45 public void onTick(long millisUntilFinished) {
46 }
47
48 @Override
49 public void onFinish() {
50 fLC.stopThread();
51 }
52 }.start();
53 }
54 }
55 }
56
57 @Override
58 public void onInterrupt() {}
59
60 @Override
61 protected void onServiceConnected() {
62 super.onServiceConnected();
63
64 AccessibilityServiceInfo info = new AccessibilityServiceInfo();
65 info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
66 info.feedbackType = AccessibilityServiceInfo.FEEDBACK_VISUAL;
67 info.notificationTimeout = 200;
68 info.packageNames = new String[] { "com.whatsapp",
69 "com.facebook.katana", "com.facebook.android" };
70 setServiceInfo(info);
71 }
72}

Ich glaube nicht, dass es an mir liegt, Android ist ja auch sonnst recht unprofessionell..

grüße Fabian!

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

27.12.2013, 20:01:57 via Website

Ich glaube nicht, dass es an mir liegt, Android ist ja auch sonnst recht unprofessionell..

Dein System will Ich dann mal sehen wenn du es fertig hast ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Fabian
  • Forum-Beiträge: 144

28.12.2013, 21:28:10 via App

Da brauch ich gar keins schreiben, schau dir iOS an :)

Antworten
Fabian
  • Forum-Beiträge: 144

30.12.2013, 22:20:45 via Website

Kann mir denn keiner helfen?
Woran könnte es denn harpern? Wie kann ich testen, ob der Service aktiviert ist?
Kann es sein, dass Android selbst diesen Service öfter kickt, wenn ja, wie finde ich das heraus und starte ihn wieder?

grüße Fabian!

Antworten
impjor
  • Forum-Beiträge: 1.793

30.12.2013, 23:46:51 via App

Löst jetzt vielleicht nicht dein Problem, aber was machst du hier?
MainActivity main = new MainActivit();
Das ist ganz sicher nicht richtig.

Ein normaler Service wird in den Einstellungen bei aktive Dienste (o.ä.) angezeigt.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Fabian
  • Forum-Beiträge: 144

31.12.2013, 00:33:34 via Website

Hey impjor,

irgendwie musste ich an die Stringvariable kommen, um meine sharedPreferences zum laufen zu bringen...
Mit static String gehts leider nicht :(

grüße Fabian!

Antworten
Fabian
  • Forum-Beiträge: 144

01.01.2014, 15:02:53 via Website

Jetzt habe ich den Fehler gefunden, ich benutze die App "Clean Master", welche natürlich meinen Dienst auch beendet.
Wenn ich die App erneut starte, finde ich sie wieder unter "Aktuelle Dienste" im Anwendungs-Manager"...

Die Frage lautet nur, wie kann ich einen Dienst erneut starten, wenn das System diesen gekillt hat?

grüße Fabian!

Antworten