Importieren von google-play-services_lib

  • Antworten:28
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 282

12.07.2014, 13:26:27 via Website

Hallo!

Ich bekommen viele Error-Meldungen wenn ich das google-play-services_lib-Projekt importiere.

image

image

... und so weiter ...

Weiß jemand wie man das ganze beheben kann?

LG Jakob

— geändert am 12.07.2014, 13:30:37

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 17:39:10 via Website

Wie hast du die Lib denn eingebunden?
Einfach zum Projekt und zum BuildPath hinzugefügt oder noch zusetzlich etwas am Projekt verändert?
Unterstütz deine App so viele Sprachen oder warum gibt es so viele Sprachen XML ordner in denen die Fehler auftreten.
Evntl. einfach löschen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 17:43:00 via App

Ich habe das Projekt normal importiert bzw. in den workspace kopiert vom sdk/extras/google/...

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 17:44:14 via Website

Das brauchst du doch garnicht.
Es reicht wenn du in dein Projekt dass die Lib benutzen soll, die Google Play serveices.jar in den Class und BuildPath einbindest.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 17:55:55 via App

Habe ich jetzt eh gemacht! Bekomme aber in der checkPlayServices-Methode eine Fehlermeldung.

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 17:59:01 via Website

Was meinst du mit checkPlayServices?
Welche Fehlermeldung ist es genau?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 18:47:52 via Website

Vielleicht liegt es daran, dass ich daweil eine Versionsnummer statisch hineingeschrieben habe, wie kann ich das lösen?

<meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Er findet bei mir den integer nicht! Habe die jar-Datei einfach als Libary hinzugefügt.

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 19:01:07 via Website

Ich habe dieses Tag in der manifest genau wegen dem gleichen Problem weggelassen und siehe Da, macht überhaupt keinen Unterschided.
Es funktioniert trotzdem alles.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 19:16:50 via Website

Oke danke!

Der Error von vorher kommt jedoch immer noch! LogCat sagt folgendes:

07-12 19:13:55.705: I/dalvikvm(25667): Could not find method com.google.android.gms.gcm.GoogleCloudMessaging.getInstance, referenced from method com.neubergerjakob.jj.MainActivity.onCreate
07-12 19:13:55.705: W/dalvikvm(25667): VFY: unable to resolve static method 4800: Lcom/google/android/gms/gcm/GoogleCloudMessaging;.getInstance (Landroid/content/Context;)Lcom/google/android/gms/gcm/GoogleCloudMessaging;


/ check if google play services for GCM are available
private boolean checkPlayServices() {
    int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
    int resultCode = GooglePlayServicesUtil
            .isGooglePlayServicesAvailable(this);   <--- hier tritt der fehler auf!
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.i(LOGCAT_TAG_GCM, "This device is not supported.");
            finish();
        }
        return false;
    }
    return true;
}

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 19:49:56 via Website

Also nach dem Log Kommt er mit irgend einer getinstance Methode nich larar.
Benutzt du sowas?
Der Check Code ist eigentlich (meiner Meinung nach) völlig überflüssig,
ich Prüfe das Vorhandensein der Google Play Services + passende GCM ID per try/catch beim Auslesen der GCM Daten.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 20:00:08 via App

Könntest du mir den Code dafür bitte schicken.

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 20:04:05 via Website

Mir ist gerade aufgefallen, dass ich auch die GoogleCloudMessagin#getinstance Methode benutze.
Aber bei mir funktioniert es einwandfrei.

public static String  registerClient(Context ctx)
{

    GoogleCloudMessaging gcm = 
              GoogleCloudMessaging.getInstance(ctx);
       String regId = null;
       String registeredResponse = "";
    try {
        regId = gcm.register(Globals.PROJECT_NUMBER); 
         registeredResponse = new HTTPAsync().httpGet(XML.getEntryValue(XmlKeys.GcmRegister) + regId,false);//Post Code to DB for GCM Messages || Weglassen, ist f&uuml;r den Poast an die PHP zum schreiben der GCM Id in meine Datenbank

    } catch (IOException e) {

        e.printStackTrace();
        Log.d("GCM Fehler",e.getMessage());
    }



                    return registeredResponse;
}

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 20:57:49 via App

Und wie überprüfst du ob das Device schon registriert wurde?

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 21:02:23 via Website

Das wird bei mir PHP seitig überprüft,
wenn aber sich eine ID ändert wir dein neuer DB eintrag erstellt.
Irgendwann lasse ich dann ein DB Clean durchlaufen, der überprüft, ob diese IDs noch existieren, sonst wird der betreffende Eintrag gelöscht.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 21:28:51 via App

Ich habe eine User-Tabelle und in den sharedpreferences den User gespeichert und in der User-Tabelle eine Spalte wo ich dann die ID speicher.
LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 22:30:41 via Website

Ja und ich mache es so:
Wenn eine Neue ID hinzukommt -> Neuer DB eintag mit der GCM ID
Irgendwann muss man die DB dann aufräümen, der rest erledigt sich von selbst.
Da müsste man Garnichts in die Sharedprefs schreiben.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

12.07.2014, 22:53:05 via App

Ich will die Zugehörogkeit zum User haben, deswegen so.
Werde morgen versuchen den Fehler wegzubekommen ...

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

12.07.2014, 22:59:58 via App

Wie meinst du das mit zugehörigkeit?
Was bingt das?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 282

13.07.2014, 11:43:36 via App

Die Zugehörigkeit von User und Device. Dass ich einem bestimmten Benutzer eine Push-Message schicken kann.

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

13.07.2014, 11:50:16 via Website

Ja schon, das kannst du aber auch in deiner DB speichern, z.b. die Email noch zusätzlich speichern.

Ich kann aber auch eine Nachricht an einen bestimmten User schicken.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten

Empfohlene Artikel